22c:16 Introduction to programming


Objectives

To develop effective programming ability as well as an appreciation of programming as an intellectual exercise; to gain an understanding of program abstractions and the relationship of algorithms to implementations.


Prerequisites

22m:2 and 22m:5 or the equivalent in high school mathematics.


Major topics:

5% A) Programming mechanics

  • Compilers, editors, file systems, etc.

  • 20% B) Programming as an analytical enterprise

  • The notion of algorithm

  • Analyzing the structure of formal and informal algorithms

  • Mapping algorithm structure into program structure

  • Programming methodology and style: e.g., iterative refinement, top-down approaches, etc.

  • Program abstraction: structuring data, formal and informal objects (e.g., code templates, classes, etc.)

  • 50% C) Fundamental programming constructs and their realization in a programming language

  • Programs and functions

  • Data: types, constants, variables, function parameters

  • Operators and expressions

  • Control structures: conditionals, loops, function invocation

  • Block structure and scope

  • Classes and objects

  • I/O and files

  • 15% D) Advanced topics and applications

  • Recursion

  • Encapsulation and information hiding

  • Structured data types

  • Informal analysis of algorithms


  • Programming assignments

    Four or five programming assignments in C++ plus programming snippets in homework assignments.



    course specs list