User:Javariel

Rough draft of my proposed CS school curriculum

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

Prereq
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
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
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
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
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
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)