CR: Curriculum Changes April 2012
Proposed Course Description Changes
3000: Operating Systems
- Old: Operating Systems - A first course in operating systems stressing fundamental issues in design: process management; memory management; process co-ordination and synchronization; interprocess communication; real-time clock management; i/o device drivers; file systems; frame-level network communication. Assignments involve the use, modification, and extension of a multitasking operating system.
Precludes additional credit for SYSC 3001. Prerequisites: one of COMP 2402, COMP 2002 or SYSC 2002, and one of COMP 2003 or SYSC 2003.
- New: Operating Systems and Computer Architecture - Operating system implementation course stressing fundamental issues in design and how they relate to modern computer architectures. Assignments involve the modification and extension of a multitasking operating system.
Precludes additional credit for SYSC 3001. Prerequisites: COMP 2401, one of COMP 2402, COMP 2002 or SYSC 2002.
- Rationale: Operating systems has been covering basic computer architecture for some time. Additionally Operating Systems is moving towards being an advanced course for those with an interest in the area. (Basic OS concepts will now be covered in 2401 and 2406.) New course description fits with the more advanced material that will be presented when OS is not required for all students.
3007: Programming Paradigms
- Old: An introduction to functional and logic programming. Topics include: semantics of functional programming, assignment-free programming, the meta-circular interpreter, recursive functions, Prolog, backtracking, cutting, negation.
- New: An introduction to alternative programming methodologies. Topics may include functional, constraint-based, concurrent, and logic programming.
- Rationale: The new description is higher-level and more open ended to permit experimentation with course content. In particular, there is the possibility of Prolog and Scheme being replaced with more modern languages, with the emphasis changing to functional programming in the context of multicore and distributed systems. This change would probably preclude significant coverage of logic programming. Note that such a course remains to be developed.