Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Instructors:

Prof. Robert "Corky" Cartwright

Staff:

Shams Imam

 

Prof. Vivek Sarkar

 

Dragos Sbirlea

 

Dr. Zung Nguyen

Staff:

 

Alina Simion Shams Imam

 

Dragos Sbirlea  

 

Alina Simion Mina Yao

 

Mina Yao  

 

Robert Brockman

 

Kiran Nair  

 

TBA Kiran Nair

Lectures:

Duncan Hall (DH) 1064

Time:

MWF 10:00-11:50am

Labs:

Ryon 102

Times:

Monday 2:00-3:20 pm, Monday 3:30-4:50 pm, Tuesday 2:30-3:50 pm.

Introduction

This course is an introduction to the fundamental principles of programming. The focus is on systematic methods for developing robust solutions to computational problems. Students are expected to have experience writing interesting programs in some credible programming language (e.g., Python, Java, Scheme, C#, C++, Visual Basic .NET, PRL, Scheme, Lisp, etc.) but no specific programming expertise is assumed. The course is targeted at potential Computer Science majors but mathematically sophisticated non-majors are welcome. We expect students to be comfortable with high-school mathematics (primarily algebra, mathematical proofs, and induction) and the mathematical rigor and vocabulary of freshman calculus. Success in the course requires a deep interest in the foundations of computer science and software engineering, self-discipline, and a willingness to work with other people on programming projects. Topics covered include functional programming, algebraic data definitions, design recipes for writing functions, procedural abstraction, reduction rules, program refactoring and optimization, object-oriented programming emphasizing dynamic dispatch, OO design patterns, fundamental data structures and algorithms from an OO perspective, simple Grapical User Interfaces (GUIs), and an exposure to the challenges of concurrent computation.

...