# Computer science program

Unofficial master program listing for all learning projects that are used by Computer Science Topics.

This is a list of all the learning projects offered by the school of computer science. This list attempts to maintain a prerequisite tree between learning projects, as well as to identify some of the key goals and topics of each learning project so that these can be reused rather than reduplicated everywhere.

### Recommended program[edit | edit source]

**Introduction Courses I**

1.1 Introduction to Computer Science

- Prerequisites - high school or advanced H.S. student
- Goals - to give understanding of computer science, both programming and hardware architecture.

1.2 Introduction to Calculus (from School of Mathematics)

- Prerequisites - high school or advanced H.S. student
- Goals - to teach basic calculus

1.3 Discrete Math I

- Prerequisites - high school or advanced H.S. student
- Topics - Logic, Sets, Functions, Counting, Graphs

1.4 Introduction to Linear Algebra (from School of Mathematics)

- Prerequisites - high school or advanced H.S. student
- Goals - to teach basic linear algebra

**Introduction Courses II**

2.1 Discrete Math II

- Prerequisites - Discrete Math I
- Topics - Complexity, Proof, Collections, Information Theory

2.2 Introduction to Theory of Computation

- Prerequisites - Discrete Math I
- Goals - learn about what can be computed and how fast it can be done; the hierarchy of finite state machines, pushdown machines, context free grammars and Turing machines; decidability, complexity theory and NP-Completness

2.3 Programming in C

- Prerequisites - Introduction to Computer Science, Discrete Math I
- Goals - to develop a small program in C

2.4 Calculus II (from School of Mathematics)

- Prerequisites - Introduction to Calculus

2.5 Data Structures (linked lists, stack, trees, hash tables, etc)

- Prerequisites - Programming in C

**Intermediate Courses I**

3.1 Object-Oriented Software Development

- Prerequisites - Introduction to Computer Science
- Goals - design and analysis of object-oriented programs.
- Topics include: classes, interfaces, fundamental object-oriented data structures, debugging and testing.

3.2 Statistics (from School of Mathematics)

3.3 Operating Systems

- Prerequisites - Introduction to Computer Science
- Goals - understand the services offered by an operating system to the user and programmer, using Linux as a model environment.
- Topics include: the shell, files, users, processes, threads & synchronization, pipes, sockets, security

- Prerequisites - Operating Systems
- Goals - understand programming in a networked environment, including concerns about latency & bandwidth, trust, network topology
- Topics include: basic protocols, network topology and routing, application-level protocols, principles of distributed applications

- Prerequisites - Introduction to Computer Science, Discrete Math I
- Goals - learn the common characteristics and differentiating factors of algorithms
- Topics include: counting, combinations and permutations, basic sorting and searching algorithms, notions of best-, worst-, and average-case performance, Big-O notation

3.6 Design and Analysis of Algorithms I

- Goals - become introduced to algorithms
- Topics include: sorting and searching, divide-and-conquer, dynamic programming, greedy algorithms, NP-completeness

**Intermediate Courses II**

4.1 Calculus III(Differential eqs, vector calculus - (from School of Mathematics))

4.2 Numerical Algorithms

4.3 Introduction to Operating System design

4.4 Network Architectures

**Advanced Courses I**

5.1 Introduction to Databases

5.2 Artificial Intelligence

5.3 Compiler Design

5.4 Functional Programming

5.5 Theory of Programming Languages

5.6 Complexity Theory and Computability

5.7 Open Source Enhancement Project

**Advanced Courses II**

6.1 Image and Signal Processing

6.2 Computer Vision

6.3 Distributed Computing

6.4 Advanced Analysis of Algorithms

6.5 Bioinformatics

6.6 Machine Learning and Data Mining

6.7 Quantum Computing

6.8 Open Source Major Enhancement Project

6.9 Embedded Programming

**Special Topics**

7.1 Some advanced learning project (micro-OS, design small CPU, new network protocol, etcx)

7.2 Launch New Open Source Software Project / Thesis

7.3 Open Source Theory/Publication Project / Thesis

### Optional courses[edit | edit source]

list of all odds and ends, together with their difficulty rating (Introductory I, Advanced II)...

List of pre-needs for Introductory 1 esp math requirements and concepts list and self-assessment pre-tests

List of learning styles with suggestions for adapting material

## Examples of Degree Programs at Universities[edit | edit source]

- Computer Science at Carleton University
- Computer Science at the University of Waterloo
- Computer Science programs and courses at Stanford University
- University of Edinburgh links to programs and courses:

Please

**contribute**to the improvement of this page by editing or

leave your suggestions/comments on the discussion page (talk page).