Javariel
Rough draft of my proposed CS school curriculum
Definitions
editLevel
editA class level describes how much previous knowledge is needed. Courses build off knowledge gained in the previous level.
Prereq
editA 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
editInto 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
editData 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
editLogical 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
editNetwork 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
editI 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)