Course objective

This is a course about computer programming. The main goal of this course is for students to develop the ability to create abstractions of complex problems, and to develop from those abstractions concrete solutions written as computer applications.

A major portion of the course will be dedicated to learning the basics of procedural and object-oriented programming in Python, as well as learning several of the useful libraries which are part of the Python programming environment. In addition, it will introduce the software design processes and tools for developing software applications. The course will culminate with a software development team project, which will simulate the process used by a team of software development consultants.

Our emphasis in teaching programming in this course centers on the following:

  1. Programming Concepts: recognizing and understanding the fundamental constructs present in all programming languages
  2. Design Methodology: Using abstraction to simplify complex problems into concrete subtasks
  3. Algorithmic Thinking: Defining the process used to glean information from data, and being able to convince oneself of its correctness
  4. Literate Programming: Writing programs which are clearly structured and can be read by a human as well as a machine
  5. Methodical and efficient development of computer programs using step-wise refinement and incremental testing and debugging

Why Python

Python is a remarkably powerful dynamic programming language that is used in a wide variety of application domains. Some of its distinguishing features include:

More at http://www.python.org/about/.

Who Uses Python?

Python is used successfully in thousands of real-world business applications around the world, including many large and mission critical systems. Success stories include YouTube.com, Google, Honeywell, Philips, AstraZeneca and George Lucas's Industrial Light and Magic.

More at http://www.python.org/about/success

What You Need to Know About Computer Programming

I believe anyone can succeed at learning to program. This is a first course in computer programming, and there are no formal pre-requisites. The only expectation of students' computer skills before taking this class is to be comfortable with using email, web browsing, and copying and pasting text. In addition, familiarity with high school-level algebra (e.g. MA 118) is assumed.

In addition, you will need time, and this is more important than you can imagine. Many people believe that computer programming is extremely difficult, and that the code is written in some arcane syntax understandable only by experts. Although some parts of the process are indeed complex, most of the source code required for homework assignments can be easily understood.

So, what makes programming so hard? It's not the difficulty: It's the time required to achieve any decent results. The homework assignments will take time, so make sure you have plenty of it.

Adapted from text in "Core Techniques and Algorithms in Game Programming," Daniel Sanchez-Crespo Dalmau.


Created by: Aaron Stevens, azs@bu.edu
http://www.cs.bu.edu/courses/cs108/
Last update: 3 October 2007