introductory computer science courses n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Introductory Computer Science Courses PowerPoint Presentation
Download Presentation
Introductory Computer Science Courses

Loading in 2 Seconds...

play fullscreen
1 / 16
more

Introductory Computer Science Courses - PowerPoint PPT Presentation

155 Views
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. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - - 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…