School:Computer science/Course list

< Wikiversity

Welcome to Wikiversity's School of Computer Science! This school focuses on teaching computer science theory and programming, from basics to the advanced. Courses are laid out so that they build upon each other. Practical courses always build upon theory courses in the hierarchy.

If you're looking for reference materials, you may want to go straight to the Computer Science bookshelf, which contains the textbooks for the courses in the catalog, as well as additional reference materials.

New course organization
This is not a complete course list, new courses welcome. But if you don't have a course you really want to teach, please consider filling in an existing course.

Sort by:

Course

Category

Module

Programming Language

 * Web Programming
 * Prereqs: None
 * Languages needed: None, teaches a language
 * Goal: To teach Javascript, Perl, PHP, and other web-related programming languages and techniques.
 * Topics: Javascript, Perl, PHP, Subversion, Web Crawlers, etc
 * Level: Second


 * Intro to programming in C
 * Prereqs: None
 * Languages needed: None, teaches a language
 * Goal: To teach the basics of programming, C syntax, and basic guidelines for writing clear code.
 * Topics: C syntax, variables, boolean logic, arrays, loops, pointers, etc
 * Level: First


 * Intro to programming in C++
 * Prereqs: C programming
 * Languages needed: C at intermediate level
 * Goal: To teach the basics of programming, C++ syntax, and basic guidelines for writing clear code.
 * Topics: C++ syntax, variables, boolean logic, arrays, loops, pointers, etc
 * Level: First


 * Beginning Java
 * Prereqs: None
 * Languages needed: None, teaches a language
 * Goal: To teach the basics of programming, Java syntax, and basic guidelines for writing clear code.
 * Topics: Java syntax, variables, boolean logic, arrays, loops, references, etc
 * Level: First


 * Computer Architecture and Assembly
 * Prereqs: Computer Design and Operation
 * Languages Needed: Any high level language (C or C++ seem best)
 * Goal: To teach how to programs run on the hardware using assembly
 * Topics: RISC assembly, tradeoffs in processor design, optimization, caching, virtual-memory, I/O
 * Level: Third

Web-oriented

 * HTML and Website Creation
 * Prereqs: None
 * Languages needed: None, teaches a language
 * Goal: To teach the basics of HTML and CSS, methods to build and maintain websites, and the common tools used by websites to create Blogs, Forums, etc.
 * Topics: HTML, CSS, FTP, Blogs, Message Boards, Wikis, etc
 * Level: First


 * Web Programming
 * Prereqs: None
 * Languages needed: None, teaches a language
 * Goal: To teach Javascript, Perl, PHP, and other web-related programming languages and techniques.
 * Topics: Javascript, Perl, PHP, Subversion, Web Crawlers, etc
 * Level: Second

Computer Science-related Math

 * Introduction to Discrete Math
 * Prereqs: None
 * Languages needed: None
 * Goal: To teach some of the basic mathematic concepts behind programming and computer science
 * Topics: boolean logic, predicate calculus, sets, functions, induction, trees, graph theory
 * Category: Computer Science-related Math


 * Note: exact cutoff between Intro to DM and DM 2 needs to be determined


 * Discrete Math II
 * prereqs: Intro to Discrete Math
 * Languages needed: None
 * Goal: To teach more advanced topics in discrete math
 * Topics: combinatorics, infinite sets, Big-O theory, program verification
 * Level: Second

Algorithms

 * Data Structures and Algorithms
 * Prereqs: Intro to Programming (any language), Intro to Discrete Math
 * Languages needed: None, algorithms are in pseudocode, practical materials in multiple languages
 * Goal: To teach important algorithms and data structures, their use, and the tradeoffs in choosing them
 * Topics: Big-O notation, arrays, lists, trees, heaps, hash tables, sorting, search
 * Level: Second

Networking

 * Networks
 * prereqs: Data structures, Discrete Math II
 * Languages Needed: None
 * Goal: To teach a basic understanding of how networks work and developing network-related applications
 * Topics: network encapsulation, OSI model, TCP, UDP, IP, Ethernet, network configurations, bandwidth, roung trip times, efficiency, routing
 * Level: Third


 * Neural Networks
 * Prereqs: Data stuctures, Discrete Math 2
 * Languages Needed: None
 * Goal: To teach the basics of neural networks and their applications
 * Topics: biological models, backpropogation, self-organizing maps, boltzmann machines, memory modeling
 * Level: Fourth


 * Network Programming
 * Prereqs: Networking, Data Structures
 * Languages needed: C,C++, or Java
 * Goal: To teach how to do network programming
 * Topics: BSD sockets, Winsock, Java sockets, IO efficiency, timing and other networking issues
 * Level: Fourth


 * Network Security
 * Prereqs: Network Programming
 * Languages needed: C,C++, or Java
 * Goal: To teach the various method to secure both a network, and information transfer across the network.
 * Topics:
 * Level: Fifth

Security

 * Network Security
 * Prereqs: Network Programming
 * Languages needed: C,C++, or Java
 * Goal: To teach the various method to secure both a network, and information transfer across the network.
 * Topics:
 * Level: Fifth


 * Security and Cryptography
 * Prereqs: Data stuctures, Discrete Math 2
 * Languages Needed: None
 * Goal:
 * Topics:
 * Level: Fourth

Hardware and Machine Languages

 * Computer design and operation
 * Prereqs: Intro to Discrete Math
 * Languages Needed: None
 * Goal: To teach how computers and microchips work at a hardware level
 * Topics: boolean algebra, K-maps, AND, OR, NOT gates, flip flops, registers, muxes, demuxes, ALUs, cahces, ISAs, binary math
 * Level: Second


 * Computer Architecture and Assembly
 * Prereqs: Computer Design and Operation
 * Languages Needed: Any high level language (C or C++ seem best)
 * Goal: To teach how to programs run on the hardware using assembly
 * Topics: RISC assembly, tradeoffs in processor design, optimization, caching, virtual-memory, I/O
 * Level: Third


 * Advanced Computer Architecture
 * Prereqs: Computer Architecture and Assembly
 * Languages Needed: Any high level language (C or C++ seem best)
 * Goal: To teach computer architecture, the design process, and how it relates to both performance and price
 * Topics: Instruction set design (both CISC and RISC), instruction level parallelism, implementation, pipelining, interrupts, memory system design
 * Level: Fourth

Database

 * Databases
 * Prereqs: Data stuctures, Discrete Math II
 * Languages Needed: None
 * Goal: To teach how databases work
 * Topics:TO be fileld in, by someone who knows more than I.
 * Level: Third

Graphics

 * Graphics
 * Prereqs: Data stuctures, Discrete Math 2
 * Languages Needed: ??
 * Goal: To teach basic 3D graphics
 * Topics: Vectors, angles, collision
 * Level: Third

Advanced Computer Science Courses

 * Programming Languages
 * Prereqs: Data stuctures, Discrete Math 2
 * Languages Needed: None
 * Goal:
 * Topics:
 * Level: Third


 * Compilers
 * Prereqs: Data stuctures, Discrete Math 2
 * Languages Needed: None
 * Goal: To teach how compilers and linkers work.
 * Topics: lexers, parsers, optimization
 * Level: Third


 * Operating Systems
 * Prereqs: Data structures, Discrete Math II
 * Languages Needed: C or C++ language (since you need direct hardware access) Taught on hardware simulator
 * Goal: To teach a basic understanding of OS internals
 * Topics: processes, scheduling, concurrency, resource allocation, deadlock, virtual memory, disk scheduling, security, transactions
 * Level: Fourth


 * Artificial Intelligence
 * Prereqs: Data stuctures, Discrete Math 2
 * Languages Needed: None
 * Goal:
 * Topics:
 * Level: Fourth


 * Advanced Operating Systems
 * Prereqs: Operating Systems
 * Languages needed: None
 * Goal: to teach how modern operaqting systems (Mac OS 9, Mac OS X, Windows, BSD, Linux, Plan9, Athena, Inferno) work and differ
 * Topics: microkernel vs macrokernel, ACLs vs group permissions, kernel +user mode apps vs Windows monolithic, Everything is a file vs not a file, API differences
 * Level: Fifth


 * Distributed Systems
 * Prereqs: Networking, Data Structures
 * Languages needed: C,C++, or Java
 * Goal: theories and principles of designing distributed applications
 * Topics: logical and vector clocks, atomic commits, rollback recovery, fault-tolerance
 * Level: Fifth


 * Automata Theory
 * prereqs: Discrete Math II
 * Languages Needed: None
 * Goal: To teach principles of modern computational theory
 * Topics: deterministic finite automata, non-deterministic finite automata, context-free grammars, push-down automata, Turing-machines, computability, space complexity
 * Level: Third

Old course organization links
This section is a series of links to the old course organization. Anyone writing a class based on the new organization should mine these for usable material first.


 * Basic Introduction to Ruby
 * Theory
 * Operating Systems
 * Databases
 * Networking
 * Compilers
 * Pervasive Computing
 * Computer Science Research Projects