CR: Reducing the Core Size
Anil S. proposes that we attempt to shrink our core requirements, particularly at the third year, in order to add flexibility to our program. Note this flexibility benefits the faculty as much, if not more, than the students: it allows us to have more "ephemeral" courses without compromising the core CS content of our degrees.
To that end, here is the Software and Computing stream, current and proposed version. Note that this proposal is merely a strawman - it is a starting point for discussion, not the end!
Note in both cases a full degree consists of 20 credits.
New Software and Computing Stream
First Year
COMP 1405 Problem Solving through Programming I (Fall) COMP 1805 Discrete Structures I (Fall) COMP 1406 Problem Solving through Programming II (Winter) MATH 1007 Elementary Calculus I (Fall) MATH 1104 Linear Algebra for Engineering & Computer Science students (Winter) ??? Technical Writing course
2.0 credits in Additional Requirements (see below)
Total: 5 credits
Second Year
COMP ???? Stack I: OS, Architecture, UNIX, C, TCP/IP (recursive DNS) COMP ???? Stack II: compilers/interpreters, languages, databases, web applications COMP ???? Software Engineering I (C++, basic SE, concurrency) COMP 2402 Abstract Data Types and Algorithms COMP 2804 Discrete Structures II
0.5 credit in MATH or STAT at the 2000-level or above 0.5 credit in COMP at the 2000-level or above 1.0 credit in Additional Requirements (see below)
Total: 5 credits
Third Year
COMP 3004 Software Engineering II COMP 3804 Design and Analysis of Algorithms I
0.5 credit in COMP, MATH, or STAT at the 2000-level or above 1.0 credit in COMP, MATH, or STAT at the 3000-level or above
2.0 credits in Additional Requirements (see below)
Total: 5 credits
Fourth Year
COMP 4905 Honours Project
1.5 credits in Computer Science at the 4000 level 3.0 credits in Additional Requirements (see below)
Total: 5 credits
Additional Requirements
5.0 credits in Approved Arts or Social Sciences or Science or Business electives 3.5 credits in free electives
New Course Descriptions
COMP 2010: Stack I
An introduction to the lower computational stack: computer architecture, operating systems, and networking. Topics: processor and I/O architectures, device drivers, file systems, memory hierarchy, virtual memory, kernels, hypervisors, scheduling, TCP/IP, socket programming. Implementation exercises and experiments are in C and shell programming on a UNIX-like environment.
COMP 2011: Stack II
An introduction to the upper computational stack: language-based virtual machines, desktop environments, and web applications. Topics: dynamic libraries, scripting and functional languages, interpreters, compilation, databases, remote procedure calls, and performance and security concerns in modern distributed applications.
COMP 1805: Discrete Structures I
Introduction to discrete mathematics and discrete structures. Topics include: propositional logic, predicate calculus, set theory, complexity of algorithms, mathematical reasoning and proof techniques, recurrences & induction, countability, functions, relations, boolean algebra. Material is illustrated through examples from computing.
COMP 2804: Discrete Structures II
Introduction to discrete mathematics and discrete structures. Topics include: counting, sequences and sums, discrete probability (including random variables, expectation, linearity of expectation, dependence, concentration results, distributions), simulation, randomized algorithms.
COMP 3804: Design and Analysis of Algorithms I
An introduction to the design and analysis of algorithms. Topics include: recurrence relations, sorting and searching, divide-and-conquer, dynamic programming, greedy algorithms, NP-completeness.
COMP 2404: Introduction to Software Engineering using C++
Coverage of the main features of the language C++ from a software engineering
perspective, with emphasis on features supporting the development of large efficient and reusable systems. Topics include: encapsulation, templates, references, constructors and destructors, operator overloading, memory management, and exception handling.
Current Software and Computing Stream
First Year
COMP 1405 Introduction to Object-Oriented Programming (Fall) COMP 1805 Discrete Structures I (Fall) COMP 1406 Design and Implementation of Computer Applications (Winter)
MATH 1007 Elementary Calculus I (Fall) MATH 1104 Linear Algebra for Engineering & Computer Science students (Winter)
2.5 credits in Additional Requirements (see below)
Total: 5 credits
Second Year
COMP 2003 Computer Organization COMP 2401 Introduction to Systems Programming(same as old COMP 1402) COMP 2402 Abstract Data Types and Algorithms COMP 2404 Programming in C++ COMP 2805 Discrete Structures II
0.5 credit in Computer Science at the 2000 level or above
0.5 credit from MATH 2007, MATH 2107 or MATH 3101 0.5 credit from STAT 2507 or STAT 2605
1.0 credit in Additional Requirements (see below)
Total: 5 credits
Third Year
COMP 3000 Operating Systems COMP 3004 Object-Oriented Software Engineering COMP 3005 Database Management Systems COMP 3007 Programming Paradigms COMP 3804 Design and Analysis of Algorithms I
0.5 credit in COMP or MATH at the 2000-level or above
2.0 credits in Additional Requirements (see below)
Total: 5 credits
Fourth Year
COMP 4905 Honours Project
1.5 credits in Computer Science at the 4000 level 3.0 credits in Additional Requirements (see below)
Total: 5 credits
Additional Requirements
5.0 credits in Approved Arts or Social Sciences or Science or Business electives 3.5 credits in free electives