Systems Programming Intro
Course Objectives: #1 RTE’s סביבת הרצה Building programs that interact with sophisticated Run-Time Environments (RTE) Key idea: programs are always created relative to other programs Interaction RTEs provide services/resources Programs we create exploit them
Metaphor: air traffic control tower
Course Objectives: #1 RTE’s (cont’d) 4 generic services: Concurrency management Memory management Communication and networking Persistent data management (file organization and database usage with SQL). Compare RTEs: Unix, Win32 OS, Java Virtual Machine (JVM), Servlets, distributed RTEs.
Course Objectives: #2: Programming Gaining experience and exposure to good practices for mid-size programming: Intensive hands-on programming in pairs. Learn C++ and systematically compare it to Java Explain how programming languages provide an abstraction layer above RTE Acquisition of good programming habits: documentation, code metrics verification, design patterns, unit testing, test driven development.
Course Workflow Website: http://www.cs.bgu.ac.il/~spl111/Main Experiment and explore: 4 large programming assignments + small HW’s Lab sessions: run and experiment with code Learn to work with new tools and environments, which often is intimidating. Part of the learning experience is to face these difficulties, not to avoid them or hide them. If you have a problem with the course material do not hesitate to approach the teaching staff during their office hours.
Contact Questions regarding an assignment: email to TA in charge Questions regarding an assignment checking: email to assignment checker. In e-mail state: name, id, group number
Textbooks and Internet Resources Concurrent Programming in Java (2nd edition) Computer Networking (2nd edition) Effective Java, (2nd edition) Accelerated C++ Effective C++ (2nd edition) More Effective C++ Effective STL The course covers subjects from different areas. The unifying concept is that of Runtime Environment and its interface with the programs we create. Thus, the suggested list is quite long. You should use the following as the reference material.
Course Requirements Experience programming = heavy workload Do weekly HW right after practical session Start working on the assignments as soon as you get them
Course Requirements: Weekly Homeworks Each practical session will have a small HW assignment. Immediate hands-on experience with class material Very simple!!! require only an hour or two Submission is obligatory.
Course Requirements: Assignments 4 big programming assignments Weight of each assignment in final grade 5% Assignments must be submitted in pairs Final Exam: weight in final grade is 80%.
Passing Criteria Submit at least 10 weekly homework Get grade >= 1 in each of 4 assignments Final exam grade >= 56. Overall average grade >= 56.