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.

## Contents

* 1 Recommended program
* 2 Optional courses
* 3 Examples of Degree Programs at Universities
* 4 See also

### Recommended program[edit | edit source]

Bletchley Park museum.

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

3.4 Introduction to Networks

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

3.5 Analysis of Algorithms

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:
* http://www.inf.ed.ac.uk/cgi-bin/dotable?file=/teaching/courses/courses_0910.txt&numcols=3,4,5
* http://www.inf.ed.ac.uk/teaching/courses/
* https://www.star.euclid.ed.ac.uk/ipp/drps_inf.htm
* http://www.drps.ed.ac.uk/index.php

Wikiversity

This Wikiversity main namespace page is frequently visited.
Please contribute to the improvement of this page by editing or
leave your suggestions/comments on the discussion page (talk page).

## See also[edit | edit source]

* Introductory Discrete Mathematics for Computer Science
* Topic:Discrete Mathematics for Computer Science
* Discrete mathematics/Number theory
* Topic:Discrete mathematics
* Topic:Discrete Maths for Olympiads
* Topic:Discrete Mathematics for Computer Science
* School:Mathematics