120 likes | 239 Views
This course focuses on understanding Run-Time Environments (RTEs) and their role in systems programming. Students will learn how to build programs that leverage RTE services such as concurrency, memory management, communication, and persistent data management. Through intensive programming exercises in C++ and comparisons with Java, the course emphasizes good programming practices, including documentation, unit testing, and design patterns. With practical assignments and lab sessions, students will gain hands-on experience essential for mid-size programming projects.
E N D
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
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
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
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.