Replace the current CMPT 101/104 (Introduction to Computer Programming) and CMPT 201 (Data and Program Abstraction), with a three course sequence, tentatively denoted CMPT 120, CMPT 121, and CMPT 221, each is a three credit course.
Currently, CS majors take CMPT 101 as their only introduction to CS and programming, followed by CMPT 201 (Data Structures) and CMPT 275 (Software Engineering). There are several serious problems with this, among which we will try to partially address the following:
The goal is a curriculum which
After completing CMPT 120, we intend the students will:
Unit |
Week |
Comp. Sci. |
Algorithms |
Prog. Lang. |
Assignment/Examples |
1. |
1 |
Sketch of CS Intro of course |
Familiar Algs. (e.g., manual arithmetic) +
non-obvious examples |
Psuedo-code+ real example |
Type, compile, run, submit a given sample program |
2. |
1 |
Computer, program, programming language, OS, application program |
Examples of computing with a sequence of integer calculations |
Int type (values + operators);variables and assignment, sequencing, very simple output |
Program with sequence of calculations and simple output |
3. |
1 |
RAM model of computation |
Simple conditionals |
Boolean type & simple expressions; simple
if-then/-else blocks |
Program with output depending on input and decisions by user |
4. |
1 |
RAMs and real computers |
Iteration, max/min/sum linear search |
Iteration (while/for) loops, 1-dim array |
Compute max/min/sum linear search |
5. |
1 |
File systems, OS, history of CS as a science |
Basic file I/O |
Examples on file I/O |
|
6. |
1 |
Binary encoding |
Binary and other bases, binary arithmetic |
EvaluatingBooleans, nesting conditionals |
Base conversion |
7. |
1 |
Computable functions |
Collections, dot production |
2-dim arrays |
Scalar x vector, dot product |
8. |
1 |
Probelm decomposition & solving
strategies |
Basic graphics |
Library, procedures parameter passing |
Drawing/moving simple objects, bar-graphs |
9. |
1 |
Floating point numbers, errors |
Numerical methods |
Real type |
mean/std.dev/draw curves |
10. |
1 |
Non-computable functions |
String processing reverse |
String type, ASCII |
String processing |
11. |
1 |
Correctness |
Algorithmic paradigms |
Programming languages |
|
12. |
1 |
Time complexity |
Ordering, selection/insertion sort |
Programming languages |
Implementation of sorting algorithms |
A number of case studies will be used to introduce software development process: problem statement->OO design (pseudo code)->OO S/W solution ->testing and debugging.
|
Weeks |
|
|
|
|
1. | 1 | 120 review, basic CS |
Linear search, selection sort, dot product |
Review of 120 using Java | Implementation of basic algorithms in Java |
2. | 2 |
Case Study #1 |
Conditional iteration (Java) |
Classes Exception Handling (+ Applet,for graphics) |
games (use random numbers) (connect with exercise/assignement/example seen in similar units of 120) |
3. | 2 |
Case Study #2 |
Explain binary search visually, introduce its two
implementations: iterative binarysearch |
Arrays, recursion, GUI intro | Implement search, "Hello World" GUI |
4. | 2 | Recursion, divide and conquer, Induction, assertion,
correctness, complexity analysis computational model RAM |
Recursive Binary search, Mergesort |
GUI intro |
Snowflake (GUI worked into other assignments as well) |
5. | 2 |
Case Study #3 |
Simple parsing |
Strings File I/O More about Exception Handling |
parse an int/floating point, implement grep, paragraph formatting,
line breaks, code prettyprinter |
6. | 2 | Case Study #4, |
stacks and queues (informal, simple implementation) parsing
expressions |
References Linked List List ADT |
simple expression parser |
7. | 1 | Turing Machine and computability Revisit Big O notation |
Review of sorting algorithms, selection or insertion sort - mergesort |
implement FSM, implement sort, Turing machine paper work |
|
8. | 1 | User Interface Design | Event-driven programming (Applet, AWT, SWING) |
GUI |
|
9. |
1 |
Social issue of CS: privacy issue, employment issue; Program paradigms |
Examples of different
programming languages |
|
Weeks |
|
|
|
|
1. |
1 |
121 review |
121 review, basic ADT |
Applets, swing |
Fundamental Unix/Linux, C++ |
2. |
2 |
Information hiding, running time analysis |
basic ADTs: stacks, queues, decks. Formally (methods
defined, implementation options) |
References (for data structs), operator overloading |
Fundamental Unix/Linux, C++ Implementation of stacks, queues, in Java and C++, Paser program |
4. |
3 |
Recursion concepts: callback stack, transforming recursive
-> iterative |
Trees: binary, traversals, general trees, BSTs |
Java interface |
Implementation of trees: binary, traversals, general trees,
BSTs, in Java and C++ |
4. |
1 |
Hash functions |
Hash tables and algorithms |
GUI |
GUI Implementation of hash tables in Java and C++ |
5. |
2 |
Heaps, priority queues |
Heaps, priority queues |
Polymophism, inheritance |
Implementation and applications of heaps and priority
queues, linking object code. |
6. |
2 |
Time and memory efficiency |
Sorting: quicksort, heapsort, mergesort, in-place sorting |
Polymophism, inheritance |
Implementation of sorting algorithms, project. |
7. |
1 |
External storage and sorting |
External storage and sorting |
Implementation of external soritng, project. |