ACCELERATED INTRODUCTION TO COMPUTERS AND PROGRAMMING
Instructor: Alec Thomas
We all use computers every day: for accessing and managing information, communicating with others, controlling vehicles and other machines, and entertaining ourselves. Likewise, every engineering project relies on computation–in design, analysis, manufacturing, deployment–and almost all engineered artifacts these days incorporate computational devices or services as integral components. Understanding what computers do and how is thus an essential part of engineering knowledge.
The courses ENGR 101 and ENGR 151 introduce first-year students to computers and how to program them to perform simple and complex tasks. The activity of programming is, in essence, the engineering of a computational process. We engineer a computation by specifying an algorithm: a well-defined set of instructions that achieve a particular goal. These instructions are expressed in a programming language, which governs the vocabulary and means for conveying an algorithm so that it can be executed by a machine. In these courses, we write programs in C++ and Matlab, two programming languages widely applied across engineering disciplines.
The accelerated course ENGR 151 covers the most basic programming constructs at a faster pace, which enables us to delve more deeply into programming principles, and address an extended set of topics. In particular, students in ENGR 151 will explore object-oriented as well as procedural programming methods, and master fundamental programming concepts such as data and procedural abstraction, and advanced control constructs.
ENGR 151 is designed for students who have previous programming experience, or a strong motivation and natural intuition for algorithms. Programming assignments will address more complex tasks earlier in the semester (compared to ENGR 101), and thus will demand a greater degree of resourcefulness in problem-solving and acquisition of programming knowledge.
This course is appropriate for both for students who are considering further study of computer science, and those who are interested but do not plan to take additional courses in programming. For the latter group in particular, ENGR 151 will provide instruction in programming topics useful for project work but not explicitly covered in standard curriculum.