
|
|
Outline
- First class on Tuesday, September 3
- No class on Friday, September 13
Location & Times
- Classes are Tuesdays and Fridays, 10:30 - 11:50, ITB 222.
- You can reach me in my office, ITB 215 Tuesdays and Fridays after class
Prerequisites
Familiarity with an imperative programming language is required. Knowledge of object-oriented programming, program verification, and formal logic is helpful.
Course Objectives
Concurrency manifests itself in numerous form, historically first with operating systems, then with distributed and parallel systems, more recently with multi-core processors and heterogenous processors (where programs are being executed on a combination of CPU’s, GPU’s, and FPGA’s). Besides the practical aspects of efficiency, there exists also a rich theory of concurrency, including models of concurrency and verification. This course is on the principles, methods, and implementations, with focus on multi-core and heterogeneous processors; these promise to increase computational performance while lowering power consumption, an essential issue for small mobile devices up to large server farms.
Essential Reading
- Course Notes, TBA
- Greg Andrews, Foundations of Multithreaded, Parallel, and Distributed Programming, Addison-Wesley, 2000.
- McCool, Reinders, Robison, Structured Parallel Programming: Patterns for Efficient Computation, Elsevier/Morgan Kaufmann, 2012. (Electronic copy at McMaster library)
- Herlihy, Shavit, The Art of Multiprocessor Programming, Morgan Kaufmann, 2012.
- Doug Lea, Concurrent Programming in Java: Design Principles and Patterns, Addison-Wesley, 1999.
- Michel Raynal, Concurrent Programming: Algorithms, Principles, and Foundations, Springer, 2013. (Online accessible through McMaster Library)
- Mordechai Ben-Ari, Principles of Concurrent and Distributed Programming (2nd Edition), Addison-Wesley, 2006.
- Allen B. Downey, Little Book of Semaphores, Green Tea Press, 2016.
Further Reading
- Donald Knuth, Literate Programming, Computer Journal, 1984.
- Justin Zobel, Writing for Computer Science, 3rd edition. Springer-Verlag, 2014. Author's page with related books.
- How to give a great research talk (See also the "Other resources" tab)
- McMaster University's Guide for the Preparation of Theses
- William Strunk, E. B. White. The Elements of Style. Macmillan, fourth edition, 2000. (McMaster Campus Store has copies)
- The Chicago Manual of Style. University of Chicago Press, seventeenth edition, 2017.
- The Meriam-Webster online dictionary and thesaurus
Topics
Topics will be selected among the following:
- Basics: Processes and Synchronization, Atomicity, Mutual Exclusion, Locks and Barriers, Semaphores, Monitors, Message Passing
- Theory: Linearizability, Correctness Proofs, Consensus
- Patterns: Map, Reduce, Fork/Join, Pipeline, Scatter, Gather, Master/Worker
- Efficiency: Transactional Memory, Lock-free Algorithms
- Implementations: Parallel Programming, Multi-core Processors, GPU's and FPGA's
- Applications: Scientific Computing, Sorting, Compression, Encryption, etc.
Evaluation
- Assignment 1, 20%, due October 11
- Assignment 2, 20%, tentatively due November 8
- Assignment 3, 20%, tentatively due December 6
- Project 40%, presentations tentatively November 12 - December 4
Bibliographies
Academic Dishonesty
- Assignments are to be completed individually; they must constitute your own work and references to all used resources must be given. Details are announced with each assignment.
- Academic dishonesty consists of misrepresentation of deception or by other fraudulent means and can result in serious consequences, e.g. the grade of zero on all assignments, loss of credit with a notation on the transcript (notation reads: "Grade of F is assigned for academic dishonesty"), and/or suspension or expulsion from the university.
- It is your responsibility to understand what constitutes academic dishonesty. For information on the various kinds of academic dishonesty please refer to the Academic Integrity Policy, specifically Appendix 3. The following illustrates only three forms of academic dishonesty:
- Submission of work that is fully or partly copied from someone else, or making your work available for copying to others.
- Submission of work that has been fully or partly obtained from other sources like the Internet.
- Copying or using unauthorized aids in tests and examinations.
- All submitted assignments are always checked for similarities.
|
|