Client Server Systems and Parallel Programming 31666
Course Home Page
ORT BRAUDE COLLEGE OF ENGINEERING
Electronic and Electrical Engineering Department
Site owner: Samy Zafrany
Course Program
English sylabusHebrew sylabus
Course Introductory Slides
Official Book Lecture Notes
- We will be using official slides for the Tanenbaum Computer Networks book (4th Edition).
- Students are welcome to download the full set of slides for all book chapters with source code and additional materials from Prentice Hall Publishing Company web site:
-
Andrew Tanenbaum, Computer Networks, Fourth Edition
Prentice Hall PTR Publishing Company
Course Lecture Notes
Course lecture notes are based on the book slides, but contain some modifications and adaptations to our special course program. The course slides are prepared during this semester and are subject to more changes and modifications, so it is not advised to print them at this early stage. If you find error or missing items, please report to: Samy Zafrany- Course Slides Part 01 [PDF]
- Course Slides Part 02 [PDF]
- Course Slides Part 03 [PDF]
- Course Slides Part 04 [PDF]
- Course Slides Part 05 [PDF]
- Course Slides on Parallel Programming part 1 [PDF]
Text Tutorials
- Sockets programming in Python - IBM
- Computer Networks and Network Programming
- Client-server communication
- The Little Book of Semaphores, Allen B. Downey
- HTML Made Really Easy, James Marshall
- HTTP Made Really Easy, A Practical Guide to Writing Clients and Servers, James Marshall
Video Tutorials
- Computer Science 162 - Lecture 1: Operating Systems and System Programming
- Client Server Introduction - Berkeley CS 61A
- Introduction to the OSI Model - Professor Isaias Leiva 2011
- Introduction to Networking - Professor Isaias Leiva
- The Little Book of Semaphores Lecture by Allen B. Downey - Book and Video
- Introduction to Multiprocessing in Python - Python Conference 2009
LINKS
-
Introduction to Computer Networking Course Notes by Dr. John T. Bell,
Department of Computer Science, University of Illinois, Chicago - Principles for Networking Protocol Design
- An Introduction to Python Concurrency - David Beazley
- RFC Searchable Database, maintained by IETF
- RFC 3232 - Well Known Ports
- The Sputnik Crisis - The day the Internet started rolling
- Mathematics Web Server
SOFTWARE
-
We will be using the Python Programming Language.
The link above contains tutorials, books, and software downloads for the course -
The smallest HTTP server
Unzip this zip file int a directory and run the myhttpd.py program to get a working http server. Read the directions inside the code.
COURSE PROJECTS
Project 1
- You will be redirected to the Python web site. You will find there the project assignment, two different solutions: procedural and object oriented. We have also inculded the Point/Line classes program that we did in the lab.
- Goto Python Course home page for materials on the Python programming language.
Project 2
- You will be redirected to the Python web site. The project is NOT to be submitted. It is for you to gain experience and expertise with the Python programming language, so please try first to solve it (use the hints), before reading the solutions below.
- Goto Python Course home page for materials on the Python programming language.
Project 3
- submitted on April 28. Due date is May 19. This time it is different than OS course. Will focus on networking problems, and this time you have to submit it.
-
Example of a 1500 bytes IP datagram:
Use it for validating your IP/TCP classes (and especially for problem 7). (Thanks Nir for extracting it from WireShark).
Project 4
- Project 4 is currently planned to be on Socket Programming
-
Socket client/server programs: these are warm up exercises ...
These are small class examples of socket programming (mainly file client/server programs) that whould help us prepare for the real project -
Threads examples code
Simple "Hello World!" Thread examples.
Project 5
A Gentle Introduction to Multi-threading. This is a light introduction to the subjects of running multiple threads and multiple cooperating processes, concurrently, in Python.
Project 6
Download the full set of all the parallel programming examples and assignments that we did in class and lab!
These include the "too much milk" programs, parallel prime computation, Leibnitz-Gregory formula for approximating the number PI, etc.
A Gentle Introduction to Multi-processing, parallel programming, process communication and synchronization. This is a light introduction to the subject of parallel programming with cooperating processes, in Python. Synchronization primitives (like locks, semaphors, and monitors) will be covered.
Project 7
Producer Consumer Computing Model.Download the seven sorting algorithms you need for this project
Download sort_contest.py
Great YouTube movie to understand sorting algorithms!
Project 8
DataBase Management Client/Server.Download all the files needed for this project
EXAMS
- Compressed Lecture Notes for Midterm Examination (Open exam)
- Midterm Examination, Spring 2013
- Solution of Midterm Examination, Spring 2013
- Compressed Lecture Notes for Final Examination, Spring 2013 (Open exam)
- Final Examination 1, Spring 2013
- Final Examination 1 Solution, Spring 2013
Kernighan's Law: Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.