# User:Javariel

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)