CS4253-Syllabus

Course Syllabus (CS4253)

Course title: Distributed Computing

Course reference: CS4253

Level: Undergraduate

Semester: Fall 2014

Room/Meeting: Monday and Wednesday from 01:00pm to 02:15pm at J131

Course Prerequisites: Programming skills in C/C++ or JAVA, Database Concepts, CS 3243/5243 (OS concepts)

Textbook: Mei-Ling Liu (2003) Distributed Computing: Principles and Applications. Pearson/Addison-Wesley, ISBN-10: 0201796449 (ISBN-13: 978-0201796445)

Teacher: Dr. Slim BECHIKH, Assistant Professor

Office hours: Tuesday and Thursday from 02:00 to 04:30pm at J379

Phone: 513-528-8535

E-mail: slim.bechikh@gmail.com

Website: https://sites.google.com/site/slimbechikh/teaching/fall-2014/cs4253-distributed-computing

I) Course Coverage

1) Catalog description – This course introduces students to the fundamental principles common to the design and implementation of programs that run on two or more interconnected computer systems. The subtopics, which are based on these principles, include: distributed operating systems, network protocols for process communication, synchronization, scheduling, and exception and deadlock resolution; understanding of client-server, web-based collaborative systems; parallel computing; concurrency issues; and API’s for distributed application development. Distributed computing environments like Java RMI are discussed and used in developing experimental projects in a cluster of networked computers.

2) Course focus – The course content addresses issues that can be solved within the framework of distributed systems. The course describes successful distributed computing paradigms in the form of abstract models, algorithms and detailed case studies of widely-used systems (e.g., the Internet). Distributed computing is different from communications and computer networks and traditional distributed operating systems. As such the course covers aspects (uppermost layers) of computer networks architecture relevant to distributed computing, including underlying technologies for the Internet - WANs, LANs, and wireless networks. The course builds on basic knowledge of programming paradigms, API’s, fundamentals of operating systems and protocols and standards for net-centric computing.

3) Course project: The course is culminated with a project that focuses on distributed computing design, implementation, testing, and simulation/deployment using such technologies as TCP/IP, UDP, Internet, Java RMI, etc.

II) Course outcomes

1) The course will allow students to apply problem solving (analysis, design, and development) skills to distributed applications.

2) Student will be able to identify and decompose complex systems into its components parts.

3) Students will be able to integrate OS and programming language concepts to solve/implement the distributed components of the systems.

4) Students will be able to develop suites of networking protocols for implementing the communicating components.

5) Students will be able to evaluate or validate their implementations via simulations and/or realistic projects.

III) Tentative course schedule

IV) Course load description and policies

1) Term project: There will be a multi-phased semester project. The phases will encompass system analysis, design, prototyping and full development, with testing and deployment. The design and implementation techniques will be drawn from OS, programming languages, database, and computer networking principles and knowledge, which the students have gathered in the course of time. The success of this project will certainly reinforce the knowledge and understanding of distributed computing paradigms and principles.

2) Academic responsibility: You are to work alone, or in designated groups, on all assigned tasks. You are encouraged to consult with other students on assignments. However, any submitted work must be yours. Any form of copying or plagiarizing from current or past students’ work will result in disciplinary action and automatic F grade for an entire group, or students involved.

V) Additional Requirements

· Each student is expected to be in attendance every class period.

· Assignment due dates must be adhered to. Each assignment will cover concepts/principles that will be discussed in the weeks following its assigned date.

· The course project (simulation) will be done in groups to allow team-oriented problem analysis, design, development, testing and demonstration.

· Any form of copying or plagiarizing from past or current students’ project code or report will result in disciplinary action and automatic F grade for an entire group or student(s) involved.

· In case of illness, emergencies, etc., students are required to leave a message in advance in my e-mail. This must be done before the class takes place, not after-the-fact.

· Attendance is required for all classes.

VI) Grades

1) The course grade will be distributed as follows:

· Semester project: 40%

· Exam 1: 30%

· Exam 2: 30%

2) The grading scale is the following:

· A: [90, 100]

· B: [80, 89]

· C: [70, 79]

· D: [60, 69]

· F: [0, 59]

VII) Notes

1) Students with disabilities who believe that they may need accommodations in this class are encouraged to contact the counselor working with disabilities at (678) 915-7226 as soon as possible to better ensure that such accommodations are implemented in a timely fashion.

2) If you are majoring in Computer Science and have questions about your schedule or you are having registration problems, please contact the CS Student Services office located at J393 or call (678) 915-3571 and ask for an appointment.