Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introductory Computer Science Courses Past experiences & thoughts Haakon Ringberg, Thomson Research Paris & Princeton University.

Similar presentations


Presentation on theme: "Introductory Computer Science Courses Past experiences & thoughts Haakon Ringberg, Thomson Research Paris & Princeton University."— Presentation transcript:

1 Introductory Computer Science Courses Past experiences & thoughts Haakon Ringberg, Thomson Research Paris & Princeton University

2 2006/12/21Introductory CS Courses: Experiences and Thoughts 2 Overview Courses at Princeton CS 126 – “General computer science” CS 333 – “Advanced programming techniques” Courses at Cornell CS 211 – “Computers and programming” CS 312 – has had too many names… Opinions & Conclusion

3 2006/12/21Introductory CS Courses: Experiences and Thoughts 3 Princeton CS 126: concepts First required programming course Also an engineering requirement Taught in Java Does not teach OOP Basic aspects of programming Functions, recursion, sorting, searching, linked lists, stacks & queues, symbol tables Broad overview of CS subfields Analysis of algorithms, architecture, theory of computation, universality, computability, circuits, cryptography

4 2006/12/21Introductory CS Courses: Experiences and Thoughts 4 Princeton CS 126: projects N-body simulation Calculate acceleration, velocity, pos Calling a graphics library Recursive graphics Think Sierpinski triangles DNA sequence algorithm Dynamic programming approach Digital signal processing Create data types for waves

5 2006/12/21Introductory CS Courses: Experiences and Thoughts 5 Princeton CS 126: projects Traveling salesperson problem (NP- complete) Point DT, heuristics for next step Markov Models Auto-completion of words Theory of computation Design Turing machine for integer comparison

6 2006/12/21Introductory CS Courses: Experiences and Thoughts 6 Princeton CS 333: concepts “Advanced Programming Techniques” is optional Brain-child of Brian Kernighan Overview of many languages shell, awk, yacc & lex, perl, HTTP, PHP, javascript, CSS, XML, Ajax, C++, Java, etc Languages are tools; use the right one for the task Large half-semester project Web-based, three-tiered architecture “Real world feel:” design docs, CVS, MySQL

7 2006/12/21Introductory CS Courses: Experiences and Thoughts 7 Cornell CS 211: concepts Second required programming course Taught in Java OOP principles Basic algorithms & data structures Sorting, searching Linked lists, trees, graphs Basic specifications Basic analysis of algorithms

8 2006/12/21Introductory CS Courses: Experiences and Thoughts 8 Cornell CS 211: projects Interfaces ADT stacks & queues Exceptions on improper input Web reachability Implement ADT set, two enumerators Algorithm to find reachable URL set Loop invariants Preconditions, postconditions, invariants Arbitrary sized integers Any base Linked lists

9 2006/12/21Introductory CS Courses: Experiences and Thoughts 9 Cornell CS 312: concepts Third and final programming course Taught in SML Covers most salient SML features Software engineering fundamentals Modularization, testing, documentation, representation invariants, etc More algorithms & data structures Hash maps, red-black trees, splay trees, LRU tries, binary heaps, B-trees, Dijkstra’s, BFS, DFS, A*, etc

10 2006/12/21Introductory CS Courses: Experiences and Thoughts 10 CS 312: PL concepts Garbage collection (copying, mark & sweep, reference counting) Substitution and environment models Typing (strength, checking, inference, unification) Tail recursion

11 2006/12/21Introductory CS Courses: Experiences and Thoughts 11 CS 312: theory Analysis of algorithms Big-O notation Amortized runtime analysis Inductive proofs Correctness proofs Inductive proofs

12 2006/12/21Introductory CS Courses: Experiences and Thoughts 12 CS 312: and more… Basic theory of computation RE/DFA/NFA Huffman coding Concurrency Locality Continuations “Taking 312 is like trying to drink from a fire hydrant” – Professor Andrew Myers

13 2006/12/21Introductory CS Courses: Experiences and Thoughts 13 Cornell CS 312: projects “Specification and Testing” Implement ADT specifications (tries and arbitrary sized integers) Representation invariants (repOK) Black-box testing Lazy streams RSA cipher as a stream operation LZ compression as a stream operation Resizable arrays & dictionaries Single-step evaluator of Robot Control Language Robot design Memory synchronization Garbage collection

14 2006/12/21Introductory CS Courses: Experiences and Thoughts 14 Cornell CS 312: projects λ-game – final project Specifications Design of “world” resistant to spec change Use of RCL interpreter Robot programming Sub-problems to projects Specification writing Associated correctness proofs Complexity analysis

15 2006/12/21Introductory CS Courses: Experiences and Thoughts 15 Opinions Choice of language Different paradigms, pick up fast, teach its highlights Algorithm design Software engineering Rep invariants, abstraction functions Analysis of algorithms Inductive correctness proofs

16 Thank you! Questions are welcome…


Download ppt "Introductory Computer Science Courses Past experiences & thoughts Haakon Ringberg, Thomson Research Paris & Princeton University."

Similar presentations


Ads by Google