Philadelphia University Faculty of Information technology Department of Computer Science 2014-2015 Course Syllabus Course Title: Concurrent and Distributed Programming Code: 0750413 Course Level: 4 Prerequisite: 761220 Lecture Time: Credit hours: 3 Academic Staff Specifics Name Rank Maram Bani Assistance Younes Professor Office Office Hours E-mail Address STT 9:10 – 10:00 IT 331 Maram_mhmd@yahoo.com MW 9:45 – 11:00 Course module description: The course will focus on the major problems specific to Concurrent and Distributed programming (synchronization, communication, mutual exclusion), and on the means by which such problems can be avoided or overcome (hardware support, semaphores, monitors…). Language features for Concurrent and Distributed Programming, and a set of selected Concurrent and Distributed algorithms are also presented. Students will be given an experience in concurrent and distributed programming. Course module objectives: The aim of this course is to introduce and detail the main concepts and practices in concurrent and distributed programming. Course/ module components Books (title , author (s), publisher, year of publication) Principles of Concurrent and Distributed Programming, M. Ben-Ari, Addisson Wesley, Second edition, 2006. Support material (s): Textbook slides Teaching methods: Lectures, tutorials, problem solving, practical works Page 1 of 3 Learning outcomes: Knowledge and understanding 1. Understand and discuss the main concepts of concurrency and distribution 2. Understand and discuss the problems specific to concurrency and distribution and the means by which these problems are overcome. 3. Understand and discuss some known distributed algorithms. Cognitive skills (thinking and analysis). 1. Analyze and Design simple concurrent programs using threads, semaphores and monitors 2. Analyze and Design simple distributed programs using channels, RPC,.. Communication skills (personal and academic). Practical and subject specific skills (Transferable Skills). 1. 1.Program concurrent programs with Java Threads 2. Program simple distributed programs suing Linda, RPC.. Assessment instruments Quizzes. Home works: Practical projects Final examination: 50 marks Allocation of Marks Assessment Instruments Mark First examination 20 Second examination 20 Final examination: 50 marks 40 Quizzes, Home works 20 Total 100 Documentation and academic honesty Documentation style (with illustrative examples) Protection by copyright Avoiding plagiarism. Page 2 of 3 Course/module academic calendar Week (1) (2) (3) (4) (5) (6) First examination (7) (8) (9) (10) (11) Second examination (12) (13) (14) (15) Specimen examination (Optional) (16) Final Examination Basic and support material to be covered Homework/reports and their due dates Introduction: What is concurrent programming? The Concurrent Programming Abstraction (1) The Concurrent Programming Abstraction (2) – Tutorial The Critical Section Problem The Advanced Algorithms for the Critical Section Problem Semaphores (1) Semaphores (2) – Tutorial Critical regions Monitors (1) Monitors (2) – Tutorial Channels (1) Channels (2) – Tutorial Spaces First homework due Distributed Algorithms (1) Distributed Algorithms (2) – Tutorial Global properties Consensus (1) Second homework due Consensus (2) – Tutorial Expected Workload: On average students need to spend 2 hours of study and preparation for each 50-minute lecture/tutorial. Attendance policy: Absence from lectures and/or tutorials shall not exceed 15%. Students who exceed the 15% limit without a medical or emergency excuse acceptable to and approved by the Dean of the relevant college/faculty shall not be allowed to take the final examination and shall receive a mark of zero for the course. If the excuse is approved by the Dean, the student shall be considered to have withdrawn from the course. Module references Books Elements of Distributed Algorithms: Modeling and Analysis with Petri Nets by Wolfgang Reisig, 2010 Concurrent Programming: Algorithms, Principles, and Foundations, Michel Raynal, 2012 Websites http://users.ece.utexas.edu/~garg/jbk.html http://www.gobookee.org/principles-of-concurrent-and-distributed-programming/ http://www3.ntu.edu.sg/home/ehchua/programming/java/J5e_multithreading.html http://en.wikipedia.org/wiki/Java_concurrency Page 3 of 3