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

**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 • CS 211 – “Computers and programming” • CS 312 – has had too many names… • Opinions & Conclusion Introductory CS Courses: Experiences and Thoughts**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**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**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**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**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**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**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**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**CS 312: theory**• Analysis of algorithms • Big-O notation • Amortized runtime analysis • Inductive proofs • Correctness proofs • Inductive proofs Introductory CS Courses: Experiences and Thoughts**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**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**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**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**Thank you!**Questions are welcome…