Engineering 101 -- Winter 2005

Class plan


The class is organized into three different components.
  1. Introduction to the basics of C++ (ends with the first exam on Feb 9)
  2. Introduction to algorithms and their software implementations in C++ and MATLAB (ends with the second exam on March 30th)
  3. C++ and MATLAB applications.

Introduction to the basics of C++

This first component runs for about 5 weeks. In the first two weeks of this five week period we will not ask you to write any programs. Instead we will focus on reading and understanding programs and gaining familiarity with the tools you will be using in this class. In the classroom we will explain the functionality of the C++ language, mainly by example. Specifically we will cover the basic language constructs for variable assignment, conditional execution, and looping (in the first day). We will also cover arrays, functions and structures in these two weeks. The pace will be fast, but you will only need to be able to read and understand the code, not write it. At the end of this time (Sunday January the 16th to be exact) you will turn in your first "programming assignment" which will actually consist of debugging an already written program.

In the next three weeks of this five week period the classroom side will focus on good programming practices. We will introduce only a limited set of additional programming language constructs (mainly various flavors of input and output). In the lab you will be writing a fair number of short programs, and the continued use of the Linux tools and debugger will be emphasized. In addition you will have three programming assignments, each of which will be due by the end of the given week.

By the end of this five week period you will be expected to be able to read and write fairly complex programs. Further, you should be able to write programs using good programming practices. Your ability to design programs will probably be fairly basic at this time. The first exam will focus on your ability to read, understand and write C++ code.

Introduction to algorithms in C++ and MATLAB

In this 6 week time period we will be introducing the MATLAB programming language (which many of you will need in future classes) and expanding your knowledge of the C++ syntax. However, our major focus will be on algorithm development: breaking a program description into manageable parts and then writing a program based upon that effort. We will introduce a set of fairly standard algorithms and discuss various pre-written algorithms. We will also do a bit of (very basic) algorithm analysis.

During this time, your programming assignments will become significantly longer and more difficult. Your time in lab will continue to be spent on learning how to use the various tools available to you. In addition your lab instructor will be working with you to learn how to be a good programmer.

This portion of the class is the most important, but also the least well-defined. Getting good at writing programs is very much like getting good at problem solving. Once issues of syntax have been fought off, all that is really left of programming is being able to break a problem down into manageable parts (which can be very difficult) and writing short programs for each of those parts. The difficulty is that the way you start to break them down (called program decomposition) may be very poor. You need the experience to see that things "feel harder than they should be" and that you need to back up and try to attack the program in a different way. For most of us, this takes a lot of time...

C++ and MATLAB applications

During this section of the class we will be finishing off the MATLAB syntax and teaching some more advanced C++ programming techniques. Lab will be spent in part on MATLAB assignments. The instructor is holding off defining the content of these few weeks until later in the semester as he sees how everyone is progressing as a programmer.