CR: Reducing the Core Size

From Soma-notes

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.

Topics outline for Stack I

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.

Topics outline for Stack II

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