Rough draft of my proposed CS school curriculum


Definitions

edit

Level

edit

A class level describes how much previous knowledge is needed. Courses build off knowledge gained in the previous level.

Prereq

edit

A prereq is a course that is assumed to be taken and understood before you take this one. Knowledge from a prereq is used heavily throughout a class. Prereqs are always from previous levels, but not all classes from a previous level are prereqs.


Level 1

edit

Into to programming (taught in multiple languages- C version, Java, C++, etc. Course structure should be replicated between courses with language specific stuff changed)

  • Prereqs: None
  • Assumes no prior programming knowledge
  • Goal: To teach the basics of programming, the syntax of the given language, and basic coding guidelines for clean code
  • Topics:
    • variables
    • commenting
    • boolean logic
    • arrays
    • loops
    • pointers, memory and allocation
    • structures
    • functions
    • basic design (breaking things down into functions and data fields)


Into to discrete math

  • Prereqs: None
  • Not a programming course (pure math)
  • Goal: To teach some of the basic concepts behind programming
  • Topics:
    • boolean logic
    • boolean algebra
    • Venn Diagrams
    • Big-O notation
    • induction
    • trees
    • graphs


Level 2

edit

Data Structures and Algorithms

  • Prereqs: Intro to Programming, Discrete math
  • Course material taught in pseudocode, with practical portion taught in multiple languages
  • Goal: to teach data structures and their use, and tradeoffs in choosing them
  • Topics:
    • Big-O notation
    • arrays
    • lists (single, double, circular)
    • trees (multiple implementations)
    • heaps
    • hash tables (different implementations, tradeoffs)
    • Sorting (bubble, merge, quick, radix, etc)
    • binary search


Discrete Math II (name open to change. Exact cutoff from 1 to 2 to 3 open to discussion. SHould be based off of whats needed for prereqs in level 2 vs what isn't)

  • prereqs: Intro to DM
  • Not a programming course
  • Goal: to teach more advanced discrete math
  • Topics:
    • pigeonhole principle
    • combinatorics
    • graph theory
    • to be filled in


Computer design and operation

  • Prereqs: Intro to DM
  • Not a programming course
  • 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

Level 3

edit

Logical analysis

  • prereqs: DM2
  • Not a programming course
  • Goal: to teach advanced boolean algebra and logical reduction
  • Topics:
    • bleh, need my logic books to fill this out

Networking

  • prereqs: Data structures, DMII
  • Not a programming course
  • Goal: To teach abasic understanding of how networks work
  • Topics:
    • network encapsulation
    • OSI model
    • TCP
    • UDP
    • IP
    • Ethernet
    • network configurations
    • bandwidth, roung trip timkes, efficiency
    • routing


Operating systems

  • Prereqs: Data structures, DMII
  • Programming course, C or C++ language (since you need direct hardware access) Taught on hardware simulator?
  • Goal: TO teach a basic understanding of OS internals and purpose
  • Topics:
    • processes
    • scheduling
    • concurrency
    • resource allocation
    • deadlock
    • virtual memory
    • disk scheduling


Databases

  • prereq: Data stuctures, DMII
  • Not a programming course
  • Goal: To teach how databases work
  • topics:
    • TO be fileld in, by someone who knows more than I.


Assembly

  • Prereqs: Computer Design and Op
  • Programming course
  • Goal: To teach how to program in assembly on bare hardware
  • topics:
    • basic assembly
    • hardware control
    • optimization
    • mapping asm to higher languages
    • memory addressing (relationship to pointers!)

Graphics

  • Prereqs: Data stuctures, DM2, trig
  • ?? programming?
  • GOal: To teach basic 3D graphics
  • topics:
    • To be filled in by the more knowledgable


Level 4

edit

Network Programming

  • Prereqs: Networking
  • Programming course
  • Goal: To teach how to do network programming
  • topics:
    • BSD sockets
    • Winsock
    • Java sockets
    • IO efficiency
    • timing and other networking issues


Modern OS survey

  • Prereqs: OSes
  • Not a programming course
  • Goal: to teach how modern operaqting systems (Mac OS 9, Mac OS X, Windows, BSD, Linux) work and differ
  • topics:
    • microkernel vs macrokernel
    • ACLs vs group permissions
    • kernel +user mode apps vs monolithic
    • Everything is a file vs not a file
    • API differences


THis is an exampel of how I would organize, not a full course list. Comments and improvements very welcomed. --Gabe Sechan 22:05, August 4, 2005 (UTC)


Wikiversity

edit

I saw your name on the Wikiversity participant's list, you may be very experienced in mathematics already, but I'm trying out instructing a Calculus course if you're interested, go to Wikiveristy, check out the mathematics department, pure mathematics, and in the course list is included Calculus. Fephisto 22:38, 9 July 2006 (UTC)