Prereq: ENG EK 125.
This course aims to introduce students to software design, programming techniques, data structures, and software engineering principles. The course is structured bottom up, beginning with basic hardware followed by an understanding of machine language that controls the hardware and the assembly language that organizes that control. It then proceeds through fundamental elements of functional programming languages, using C as the case example, and continues with the principles of object-oriented programming, as principally embodied in C++ but also its daughter languages Java, C#, and objective C. The course will conclude with an introduction to elementary data structures and algorithmic analysis. Throughout, the course develops core competencies in software engineering, including programming style, optimization, debugging, compilation, and program management, utilizing a variety of Integrated Development Environments and operating systems.
[ 4 cr.]