Test
edit SideBar
|
- Develop abstract, computational data models for representing problem domain-level information [1A]
- Follow and explain an explicit Design Recipe to go from an idea to a working, tested final program (based on HTDP2e and HTDC) [1A]
- Data Definitions, examples (of data), templates (for code that operates on this data)
- Contract, Purpose and Header for each function
- Function Examples
- Template Instantiation
- Programming
- Test (using examples from step 3)
- Develop test procedures for programs [unit testing, test-driven development] [1A]
- Print statements. Limit file or graphics I/O to library functions. [1A]
- Choose from appropriately, and write programs over:
- atomic data, [in Python atomic data types are: numbers, strings, characters, booleans] [2A]
- classes [arbitrary compound data, including fields that themselves are compound types, classes used as structures with no inheritance], [2A]
- mixtures of data
- simple enumerated types [1A]
- type unions (functions that work on multiple classes without inheritance). We figure first show them explicit dispatch (isinstance), and then how Python’s duck typing does this automatically for you [1A]
- data of arbitrary size (arrays/sequences, lists, binary trees) [2B]
- True OO programming with inheritance is not covered (covered in CISC-181 Intro to CS II)
- Use function composition correctly [2A]
- Use conditional statements correctly [2A]
- Write recursive programs [especially structural recursion on lists and trees] [2B]
- Explain when state and mutation is needed in programming (and why we try to avoid it when possible!), also include variable scoping [1B]
- Write iterative programs using common forms of iteration, including for and while loops. [Iteration via tail-recursive accumulation is optional and unlikely!!] [2B]
- Efficiency/Performance: Recognize basic time/space behavior of simple programs (constant, logarithmic, linear, polynomial, exponential). Not formal Big O analysis but experimental performance [2B]
- Familiarity with a few basic algorithms:
- searching in lists, trees, binary search trees [no balancing!!!!] [2B]
- sorting: insertion, selection, quicksort (all on lists, only recursive quicksort) [2B]
- Abstract over and analyze simple programming patterns (refactoring)
- simple abstraction by adding parameters [1C]
- [Neither parametric nor subtype polymorphism is covered in 106]
- [Optional: map, filter, reduce + lambda] [3C?]
- Numeric Programming (numpy/scipy) **** TO BE DETERMINED [3C]
- 2D function plotting (matplotlib)
- finding function roots
- simple statistical analyses
- WHAT ELSE?????
- Introduction to MATLAB **** TO BE DETERMINED [6C]
- Comparision to Python
- Syntax, data types, simple functions, numerical programming topics
- [No event-driven programming, Model/View]
- [No Java]
Possible course schedule using 3 major units
A | B | C |
1 | 1 | 5d | 2 | 13 | 1+3? |
2 | 1 | 8 | 2 | 14 | 3 |
3 | 1 | 9 | 1 | 15 | 6 |
4 | 1 | 10 | 2 |
5a-c | 6 | 11 | 2 |
6 | 2 | 12a-b | 4 |
7 | 2 |
TOTALS: | 14 | | 13 | | 10-13? |
|