Recent Changes - Search:

Test

edit SideBar

106Topics

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