Schedule
Mon-Thu, 1:30 PM - 3:25 PM (9/4/2017 - 12/15/2017) Location: SLC SC 103
Wed, 11:05 AM - 1:00 PM (9/4/2017 - 12/15/2017) Location: SLC SC 104
Wed, 1:30 PM - 3:25 PM (9/4/2017 - 12/15/2017) Location: SLC SC 104
Description
This lecture will present a rigorous introduction to computer science and the art of computer programming, using the elegant, eminently practical, yet easy-to-learn programming language Python. We will learn the principles of problem solving with a computer while gaining the programming skills necessary for further study in the discipline. We will emphasize the power of abstraction, the theory of algorithms, and the benefits of clearly written, well-structured programs. Fundamental topics will include: how computers represent and manipulate numbers, text, and other data (such as images and sound); variables and symbolic abstraction; Boolean logic; conditional, iterative, and recursive computation; functional abstraction (“black boxes”); and standard data structures, such as arrays, lists, and dictionaries. We will learn introductory computer graphics and how to process simple user interactions via mouse and keyboard. We will also consider the role of randomness in otherwise deterministic computation, basic sorting and searching algorithms, and some principles of game design. Toward the end of the semester, we will investigate somewhat larger programming projects and, so, will discuss file processing; modules and data abstraction; and object-oriented concepts such as classes, methods, and inheritance. As we proceed, we will debate the relative merits of writing programs from scratch versus leveraging existing libraries of code. Weekly hands-on laboratory sessions will reinforce the programming concepts covered in class.