introductory computer science courses past experiences & thoughts haakon ringberg, thomson...

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

Upload: britton-nicholson

Post on 18-Dec-2015

212 views

Category:

Documents


0 download

TRANSCRIPT

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

Introductory Computer Science Courses

Past experiences & thoughts

Haakon Ringberg,Thomson Research Paris& Princeton University

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

2006/12/21Introductory CS Courses: Experiences and Thoughts

2

Overview

Courses at PrincetonCS 126 – “General computer science”

CS 333 – “Advanced programming techniques”

Courses at CornellCS 211 – “Computers and programming”

CS 312 – has had too many names…

Opinions & Conclusion

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

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

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

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

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

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 ModelsAuto-completion of words

Theory of computationDesign Turing machine for integer

comparison

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

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

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

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, searchingLinked lists, trees, graphs

Basic specifications Basic analysis of algorithms

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

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

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

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

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

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

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

2006/12/21Introductory CS Courses: Experiences and Thoughts

11

CS 312: theory

Analysis of algorithmsBig-O notationAmortized runtime analysisInductive proofs

Correctness proofsInductive proofs

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

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

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

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

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

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

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

2006/12/21Introductory CS Courses: Experiences and Thoughts

15

Opinions

Choice of languageDifferent paradigms, pick up fast,

teach its highlights Algorithm design Software engineering

Rep invariants, abstraction functions Analysis of algorithms Inductive correctness proofs

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

Thank you!

Questions are welcome…