Curriculum Proposal to SCS Faculty May 2011: Difference between revisions
No edit summary |
No edit summary |
||
Line 81: | Line 81: | ||
=COMP | =COMP 3804: Design and Analysis of Algorithms I= | ||
==Old Course Description== | |||
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. | |||
Prerequisites: COMP 2002 or COMP 2402, and either COMP 1805/MATH 1805 or both of MATH 2007 and MATH 2108, or equivalents. | |||
==New Course Description== | |||
An introduction to the design and analysis of algorithms. Topics include: recurrence relations, sorting and searching, divide-and-conquer, dynamic programming, greedy algorithms, graph algorithms, NP-completeness. | |||
Prerequisites: COMP 2002 or COMP 2402, and COMP 2805 or COMP 2804 or both of MATH 2007 and MATH 2108, or equivalents. | |||
==Rationale== | |||
Added COMP 2804 in the list of courses that can be considered as a prerequisite. Revised the course description to add Graph Algorithms as one of the topics that are covered. Graph Algorithms have always been covered in this course but did not appear in the course description. | |||
=COMP 2401: Introduction to Systems Programming= | =COMP 2401: Introduction to Systems Programming= | ||
Line 110: | Line 126: | ||
Lectures three hours a week, tutorials one hour a week. | Lectures three hours a week, tutorials one hour a week. | ||
=COMP 2404: Introduction to Software Engineering= | |||
Introduction to object-oriented software development, with emphasis on design and implementation of medium-sized programs. Topics include abstraction, modularity, encapsulation, reusability, and design patterns. | |||
=COMP 2405: Internet Application Programming= | =COMP 2405: Internet Application Programming= |
Revision as of 01:14, 4 May 2011
This document contains proposed course changes for the 2012/2013 academic year.
Executive Summary
Introduction
- we already changed 1405 and 1406
- goal is to teach programming through teaching other topics that are central to modern CS: OS, databases, web
Courses to be Eliminated
- COMP 2003
- assembly language => exposure through COMP 2401 and 2405
- digital logic => COMP 1805
- number representation => COMP 1805 and 2401
- processor architectures, interrupts, devices => exposure in COMP 2401
- multicore => cross-cutting concern
Courses to be Upgraded
We propose to keep the following courses, but not include them in the set of minimum required courses. To facilitate this, we have moved selected topics to other required courses. (Note that at this time we have not finished our design of third year or adjusted streams.)
- COMP 2805
- finite automata => COMP 1805
- rest of formal languages, computability, automata theory => stays
- COMP 3000: operating systems
- programmer view of following => COMP 2401
- process management
- memory management
- process coordination and synchronization
- inter-process communication
- file systems
- networking
- kernel view of above => stays
- real-time clock management => stays
- I/O device drivers => stays
- programmer view of following => COMP 2401
- COMP 3005
- SQL => COMP 2405
- data models => COMP 2405
- database design => COMP 2405
- entity relationship modeling => stays
- object-oriented database design, OQL => stays
- the relational algebra => stays
- normalization theory => stays
- physical data organization => stays
- COMP 3007
- functional languages, closures => COMP 2405
- assignment-free programming => COMP 2405
- recursive functions => cross-cutting, esp. COMP 1406
- metacircular interpreter => stays
- prolog, backtracking, cutting, negation => stays
- semantics of functional programming => stays
COMP 1805: Discrete Structures I
Old Course Description
Introduction to discrete mathematics and discrete structures. Topics include: propositional and predicate calculus, Boolean algebra, introduction to complexity of algorithms, mathematical reasoning, counting, recurrences, relations, introduction to graphs.
New Course Description
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.
Rationale
1805 is notoriously difficult for first-year students because in the current course, too many topics are covered for a one term introductory first-year discrete math course. Therefore, to address this situation, we propose to move some of the more advanced material into a second course (COMP2804 Discrete Structures II). Specifically, we will move Boolean algebra, counting, discrete probability, some of the more advanced functions and advanced sequences and sums, and methods on how to solve recurrence relations.
COMP 2804: Discrete Structures II
New Course Description
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.
Rationale
This is the course that contains the more advanced material from the original version of COMP1805. As noted above, we cover Boolean algebra, counting, discrete probability, some of the more advanced functions and advanced sequences and sums, and methods on how to solve recurrence relations. These are topics that are currently covered in COMP1805. However, students are having too much difficulty grasping all of the different topics in a one term course at the first year level.
COMP 3804: Design and Analysis of Algorithms I
Old Course Description
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.
Prerequisites: COMP 2002 or COMP 2402, and either COMP 1805/MATH 1805 or both of MATH 2007 and MATH 2108, or equivalents.
New Course Description
An introduction to the design and analysis of algorithms. Topics include: recurrence relations, sorting and searching, divide-and-conquer, dynamic programming, greedy algorithms, graph algorithms, NP-completeness.
Prerequisites: COMP 2002 or COMP 2402, and COMP 2805 or COMP 2804 or both of MATH 2007 and MATH 2108, or equivalents.
Rationale
Added COMP 2804 in the list of courses that can be considered as a prerequisite. Revised the course description to add Graph Algorithms as one of the topics that are covered. Graph Algorithms have always been covered in this course but did not appear in the course description.
COMP 2401: Introduction to Systems Programming
Old Course Description
Introduction to programming with procedures and primitive data types, designed for B.C.S. students. Topics include: arrays, strings, pointers, heap and stack memory allocation and deallocation, iterative and recursive linked list manipulations, system/library calls.
Precludes additional credit for COMP 1002, COMP 1402, COMP 2001, SYSC 1102, and ECOR 1606.
Prerequisite: COMP 1406.
Restricted to students registered in the B.C.S. program, combined Honours in Computer Science and Mathematics, Honours Computer Mathematics,and Honours Computer Statistics.
Lectures three hours a week.
New Course Description
Introduction to system-level programming with fundamental OS concepts, procedures, primitive data types and user-defined types, designed for B.C.S. students. Basic OS topics include programmer view of the following: process management, memory management, process coordination and synchronization, inter-process communication, file systems and networking. Other topics include: pointers, heap and stack memory allocation and deallocation, system and library calls.
Precludes additional credit for COMP 1002, COMP 1402, COMP 2001, SYSC 1102, and ECOR 1606.
Prerequisite: COMP 1406.
Restricted to students registered in the B.C.S. program, combined Honours in Computer Science and Mathematics, Honours Computer Mathematics,and Honours Computer Statistics.
Lectures three hours a week, tutorials one hour a week.
COMP 2404: Introduction to Software Engineering
Introduction to object-oriented software development, with emphasis on design and implementation of medium-sized programs. Topics include abstraction, modularity, encapsulation, reusability, and design patterns.
COMP 2405: Internet Application Programming
Old course description
Design and implementation of Internet application programs. Topics include: fundamentals of the Web, introduction to client/server architectures, Internet programming, Web browsers, hypertext links, network programming.
Precludes additional credit for COMP 2005.
Prerequisite: COMP 2401 and COMP 1406.
Restricted to students registered in the B.C.S. program, combined Honours in Computer Science and Mathematics, Honours Computer Mathematics, and Honours Computer Statistics.
Lectures three hours a week.
New course description
An introduction to Internet application development that emphasizes the computer science fundamentals of the technologies underlying web applications. Topics include: scripting and functional languages, language-based virtual machines, database query languages, remote procedure calls over the Internet, and performance and security concerns in modern distributed applications.
Precludes additional credit for COMP 2005.
Prerequisite: COMP 2401.
Restricted to students registered in the B.C.S. program, combined Honours in Computer Science and Mathematics, Honours Computer Mathematics, and Honours Computer Statistics.
Lectures three hours a week along with weekly one-hour tutorials.
Rationale
* learn basics of modern web applications? * basics of dynamic languages o first class functions o functional programming concepts (non-mutability) * basics of databases o data representation o query languages * basics of distributed applications o latency vs. bandwidth o reliability concerns o state vs. stateless