Object-Oriented Programming for Interactive Systems
(Programming for Engineers)
CS 5962/6962
ME 5250/6250

This course will be run through the Canvas system. Please see the course website for full details.

Course Instructor: Dr. David E. Johnson
Instructor webpage: www.cs.utah.edu/~dejohnso
Office: WEB 2875, x5-1726
Meeting Time: MWF 12:55-1:45PM
Classroom: HEB 2008 (check for updates)

This course is only open to non-CS majors or graduate students. The CS sections of the course are only through instructor permission and I am not allowed to offer those add codes to CS students. We welcome students from other disciplines.

Textbook: We will use online sites and I have written fairly extensive notes (100+ pages). I do suggest getting a C++ text for reference and a different view than what I present. In the past I have required C++ Primer Plus, sixth edition, which was almost too much stuff but I recommend it for the price and if you want something else. But there is no required text this time. The main programming environment we will use is Visual Studio, which is freely available to students.

Course Description: Many modern engineering systems incorporate computational elements, while other engineering systems needed to be validated through computational tools or through computer-aided data collection. This course is designed to provide a foundation in programming, software engineering, debugging, and using existing computational codes in the context of controlling physical equipment, gathering experimental data, and visualizing results. The course will be taught using the C++ programming language, which provides balance between access to physical devices and modern programming concepts. The course provides a level of programming proficiency to students planning on taking additional coursework with a programming emphasis or who might need custom computational applications in their research.

The course will use a mixture of short programming exercises and longer, task-oriented programming assignments that demonstrate commonly used tools and libraries. Examples of assignments are things like tracking a colored dot with a webcam, building a modern user interface, talking over a serial port to a robot, and using and instrumenting a matrix math library. We also cover a little bit of Python so that students can compare how object-oriented concepts are expressed in each language. The course starts at a very introductory level but moves at a fast pace. Most incoming students have had at least a little bit of Matlab or C programming but are not yet comfortable with many programming concepts.