1 / 16

Introductory Computer Science Courses

Introductory Computer Science Courses. Past experiences & thoughts. Haakon Ringberg, Thomson Research Paris & Princeton University. Overview. Courses at Princeton CS 126 – “General computer science” CS 333 – “Advanced programming techniques” Courses at Cornell

more
Download Presentation

Introductory Computer Science Courses

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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 Introductory 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 Introductory 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 Introductory 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 Introductory 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 Introductory 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 Introductory 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 Introductory 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 Introductory 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 Introductory CS Courses: Experiences and Thoughts

  11. CS 312: theory • Analysis of algorithms • Big-O notation • Amortized runtime analysis • Inductive proofs • Correctness proofs • Inductive proofs Introductory 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 Introductory 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 Introductory 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 Introductory 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 Introductory CS Courses: Experiences and Thoughts

  16. Thank you! Questions are welcome…

More Related