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

Slides:



Advertisements
Similar presentations
PROGRAMMING LANGUAGE (JAVA) UNIT 42 BY ROBERT BUTTERFIELD TELEPHONE Data Structures and Algorithms.
Advertisements

Course Outline Presentation Term: F09 Faculty Name : Asma Sanam Larik Course Name :INTRO TO COMPUTING Course Code : CSE145 Section :1 Semester : 1.
Data Structures.
NSF/TCPP Early Adopter Experience at Jackson State University Computer Science Department.
1 CSC 421: Algorithm Design & Analysis Spring 2013 See online syllabus: (also on BlueLine2) Course.
Review. What to know You are responsible for all material covered in lecture, the readings, or the programming assignments There will also be some questions.
CMPT 225 Data Structures and Programming. Course information Lecturer: Jan Manuch (Jano), TASC TAs: Osama Saleh,
CSCE 210 Data Structures and Algorithms
CS 307 Fundamentals of Computer Science 1 Abstract Data Types many slides taken from Mike Scott, UT Austin.
1 CS 312 – Lecture 28 Continuations –Probably the most confusing thing you’ve seen all semester… Course summary –Life after CS 312.
June 13, Introduction to CS II Data Structures Hongwei Xi Comp. Sci. Dept. Boston University.
Overview CS113, Fall 2000 Gene Itkis. The Promise Heavy Fast-paced Challenging Rewarding.
CSCE156: Introduction to Computer Science II Instructor Stephen Scott Website
Data Structures & Algorithms What The Course Is About s Data structures is concerned with the representation and manipulation of data. s All programs.
Review for Test 2 i206 Fall 2010 John Chuang. 2 Topics  Operating System and Memory Hierarchy  Algorithm analysis and Big-O Notation  Data structures.
Course Introduction CS 1037 Fundamentals of Computer Science II.
Data Structures Introduction. What is data? (Latin) Plural of datum = something given.
CS503: Tenth Lecture, Fall 2008 Review Michael Barnathan.
Course Review i206 Fall 2010 John Chuang. 2 Outline  Test 3 topics  Course review  Course evaluation.
Data Structures, Spring 2004 © L. Joskowicz 1 DAST – Final Lecture Summary and overview What we have learned. Why it is important. What next.
DAST, Spring © L. Joskowicz 1 Data Structures – LECTURE 1 Introduction Motivation: algorithms and abstract data types Easy problems, hard problems.
Mathematics throughout the CS Curriculum Support by NSF #
Data Structures and Programming.  John Edgar2.
Data Structures Lecture-1:Introduction
Instructor: Dr. Sahar Shabanah Fall Lectures ST, 9:30 pm-11:00 pm Text book: M. T. Goodrich and R. Tamassia, “Data Structures and Algorithms in.
Prof. dr Slobodanka Đorđević-Kajan Dr Dragan Stojanović
Teaching Teaching Discrete Mathematics and Algorithms & Data Structures Online G.MirkowskaPJIIT.
CS223 Algorithms D-Term 2013 Instructor: Mohamed Eltabakh WPI, CS Introduction Slide 1.
1 CSC 427: Data Structures and Algorithm Analysis Fall 2011 See online syllabus (also available through BlueLine): Course goals:
CSCA48 Course Summary.
Java Collections An Introduction to Abstract Data Types, Data Structures, and Algorithms David A Watt and Deryck F Brown © 2001, D.A. Watt and D.F. Brown.
Korea Advanced Institute of Science and Technology, Dept. of EECS, Div. of CS, Information Systems Lab. 1/10 CS204 Course Overview Prof.
Relationships Between Structures “→” ≝ “Can be defined in terms of” Programs Groups Proofs Trees Complex numbers Operators Propositions Graphs Real.
CS212: DATA STRUCTURES Lecture 1: Introduction. What is this course is about ?  Data structures : conceptual and concrete ways to organize data for efficient.
Computer Science 102 Data Structures and Algorithms CSCI-UA.0102 Fall 2012 Lecture 1: administrative details Professor: Evan Korth New York University.
Motions for Permanent Undergraduate Course Numbers Brian L. Evans On Behalf of the ECE Curriculum Committee September 21, 2015.
1 CSC 427: Data Structures and Algorithm Analysis Fall 2010 See online syllabus (also available through BlueLine): Course goals:
Overview of Course Java Review 1. This Course Covers, using Java Abstract data types Design, what you want them to do (OOD) Techniques, used in implementation.
Data Structures and Algorithms – using JAVA Boro Jakimovski University of Sts Cyril and Methodius, Skopje.
SSD 5 Overview Kenneth L Moore Associate Professor CCAC Boyce CIT.
December 4, Algorithms and Data Structures Lecture XV Simonas Šaltenis Aalborg University
CS Data Structures II Review & Final Exam. 2 Topics Review Final Exam.
Data Structures for Programmers Vamshi Ambati
Discrete Structures and The Three-Fold Introduction to Computer Science Doug Baldwin Department of Computer Science SUNY Geneseo.
The course. Description Computer systems programming using the C language – And possibly a little C++ Translation of C into assembly language Introduction.
HKOI 2005 Training Introduction to Algorithms Alan, Tam Siu Lung.
Data Structures Using C++ 2E
1 CSC 427: Data Structures and Algorithm Analysis Fall 2006 See online syllabus (also available through Blackboard): Course goals:
Course Preliminaries Course Objectives Course Objectives Students’ Learning Outcomes Students’ Learning Outcomes Grading Policy Grading Policy Course Resources.
CSE 326 Course Review David Kaplan Dept of Computer Science & Engineering Autumn 2001.
Data Structures and Algorithms in Java AlaaEddin 2012.
CSE332: Data Abstractions Lecture 28: Course Wrap-up Tyler Robison Summer
Course Review Fundamental Structures of Computer Science Margaret Reid-Miller 28 April 2005.
Introductory Lecture. What is Discrete Mathematics? Discrete mathematics is the part of mathematics devoted to the study of discrete (as opposed to continuous)
서울대한양대 ( 안 산 ) 충남대 1년1년 컴퓨터기초 (C) 컴퓨터프로그래밍 (C, Java) 컴퓨터프로그래밍 (C) 2. 봄 프로그래밍 원리 (Scheme, ML) Structure & Interpretation of Computer Programs 프로그래밍 방법론.
Data Structures Dr. Abd El-Aziz Ahmed Assistant Professor Institute of Statistical Studies and Research, Cairo University Springer 2015 DS.
Computer science Computer science is a broader and much wider field as compared to programming. In the case of programming, we utilize the concepts.
CSC 421: Algorithm Design & Analysis
CSC 427: Data Structures and Algorithm Analysis
“<Fill in your definition here.>”
Exam Hints.
Big Ideas in Computer Science
CSC 421: Algorithm Design & Analysis
Ada – 1983 History’s largest design effort
CS3901 Intermediate Programming & Data Structures Introduction
Introduction to Computer Science for Majors II
Review CSE116 2/21/2019 B.Ramamurthy.
Overview Analysis Notation Specific ADTs
Final Review B.Ramamurthy 5/8/2019 BR.
CSCE156: Introduction to Computer Science II
Presentation transcript:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Thank you! Questions are welcome…