User:Javariel
Rough draft of my proposed CS school curriculum
Definitions
[edit | edit source]Level
[edit | edit source]A class level describes how much previous knowledge is needed. Courses build off knowledge gained in the previous level.
Prereq
[edit | edit source]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 | edit source]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 | edit source]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 | edit source]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 | edit source]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 | edit source]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)