Versions Compared

Key

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

...

COMP 211: Principles of Program Design

Instructors:

Prof. Robert "Corky" CartwrightTBA

Staff:

Alina SbirleaTBA

 Dr. Stephen Wong 

 

Kamal Sharma 

 

 

 

Nicholas Coltharp 

Lectures:

Duncan Hall (DH) 1075TBA

Time:

MWF 10:00-10:50amTBA

Lab:

Ryon 102TBA

Time:

Tuesday 10:50am-12:05pmTBA

Office Hours:

  • Dr. Cartwright: MWF 9:00 AM - 10:00 AM
  • Dr. Wong:   See home page
  • Alina: MWF 11:00 AM -12:00 PM
  • Kamal:  MF 3:00 PM - 5:00 PM
  • Nicholas: TR 7:00 PM - 8:30 PMTBA

e-mail the entire class: comp211s11 at owlspace-ccm.rice.educlass: TBA 

e-mail just the staff: comp211 at rice.edu TBA 

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.

Students will learn the practical skills required to write, test, maintain, and modify programs. Labs and assignments use the Scheme and Java programming languages.

Text For Scheme: How to Design Programs, Second Edition (DRAFT) by Felleisen et al. The First Edition was published in 2001 and has LC classification QA76.6 .H697 2001 (Available online; no purchase is necessary.)

DrScheme/DrRacket: Please download and use the DrScheme/DrRacket system available from the Racket download site. To avoid compatibility problems, please make sure you use a Version numbered 5.0.2

Notes for Java: Object-oriented Design

...