Syllabus
Unit I
Basic concurrency concepts, problems with concurrent applications – data races, deadlocks, live-locks, resource starvation, priority inversion, Designing concurrent applications – analysis-design-implementation-testing-tuning, Java concurrency API – Threads in Java.
Unit II
Managing lots of threads – basic components of executor framework, serial vs. coarse grained vs. fine grained concurrency with examples, Concurrency in a client/server environment, Callable and Future interfaces, Running tasks divided into phases using Phaser class.
Unit III
Fork-Join parallel programming framework – Divide-and-conquer, Recursive Action Task, ForkJoinPool, and ExecutorService, Work stealing. Processing massive dataset with Parallel Streams – Concurrent Loader, Concurrent Statistics, Concurrent data structures and synchronization utilities. Overview of testing and monitoring concurrent applications.
Objectives and Outcomes
Course Objectives
- The course aims to provide fundamentals of concurrency and expose students to the various concurrent frameworks that includes multi-threaded and parallel frameworks.
- Although, the content of the course is centred around Java, the underlying concepts are general and applicable irrespective of the languages.
- The course will provide hands-on exposure to various subtleties in concurrent programming which are key for software developers.
Course Outcomes
CO1: Understand and appreciate the associated with concurrent programming.
CO2: Apply the multi-threaded programming framework of Java on different scenarios.
CO3: Design parallel programming frameworks using Java.
CO4: Understand the use of concurrent data structures and synchronization utilities.
CO-PO Mapping
PO/PSO
|
PO1
|
PO2
|
PO3
|
PO4
|
PO5
|
PO6
|
PO7
|
PO8
|
PO9
|
PO10
|
PO11
|
PO12
|
PSO1
|
PSO2
|
CO
|
CO1
|
1
|
1
|
–
|
–
|
2
|
2
|
|
|
3
|
2
|
2
|
–
|
2
|
3
|
CO2
|
1
|
1
|
–
|
–
|
3
|
2
|
|
|
3
|
2
|
2
|
–
|
2
|
3
|
CO3
|
1
|
2
|
2
|
–
|
–
|
2
|
|
|
3
|
2
|
2
|
–
|
2
|
3
|
CO4
|
1
|
2
|
2
|
–
|
–
|
2
|
|
|
3
|
2
|
2
|
–
|
2
|
3
|
Evaluation Pattern
Evaluation Pattern: 70:30
Assessment
|
Internal
|
End Semester
|
MidTerm Exam
|
20
|
|
Continuous Assessment – Theory (*CAT)
|
10
|
|
Continuous Assessment – Lab (*CAL)
|
40
|
|
**End Semester
|
|
30 (50 Marks; 2 hours exam)
|
*CAT – Can be Quizzes, Assignments, and Reports
*CAL – Can be Lab Assessments, Project, and Report
**End Semester can be theory examination/ lab-based examination/ project presentation
Text Books / References
Textbook(s)
Javier Fernández González, “Mastering Concurrency with Java 9”, Second Edition, Pakt Publishing, 2017.
Reference(s)
Brian Goetz, “Java Concurrency in Practice”. Addison Wesley, 2010.
Herbert Schidlt, “Java Complete Reference”, Eleventh Edition, Paperback, 2020.