CS108
Fall 2024

Programming Workshop for non-CS Majors

Course information

Course Description

CS108 is an introduction to programming suitable for students not majoring in computer science. CS108 will cover a broad set of topics about application development, including: basic programming concepts, application decomposition and abstraction; data manipulation and programming with databases; graphical user interfaces; and debugging. Assignments will include applications in science, commerce, games, the Web, and social networking.

Our emphasis in teaching programming in this course centers on the following: Problem analysis: organizing problems from our world into the structure, syntax, and semantics in which a computer solution can be applied. Fundamentals of procedural programming: writing functions, using pre-existing modules, flow-of-control, and writing interactive programs. A brief introduction to object oriented programming, including the use of objects from the Python API and creating user-defined classes. The role of data structures and databases in application programming, including the use of objects, lists, tuples, dictionaries, and database object persistence. * The structure and development of web applications, which generate dynamic content for the World Wide Web, social networking, and e-commerce.

Prerequisites

I believe anyone can succeed at learning to program. This is a first course in computer programming, and there are no formal pre-requisites. The only expectation of students’ computer skills before taking this class is to be comfortable with using email, web browsing, and copying and pasting text. In addition, familiarity with high school-level algebra (e.g. MA 118) is assumed.

In addition, you will need time, and this is more important than you can imagine.

Computer programming, like farming, takes time. There are many steps in farming (e.g., seeding, watering, fertilizing, waiting, and harvesting), which must be completed in order. Each step takes time, and it’s simply not possible to cram farming into a shorter time horizon. Programming also has many steps (e.g., understanding the problem, designing an algorithm, writing code, testing code, rewriting code, retesting code, and checking that the solution meets the requirements to solve the problem). Learning to program is similar to farming, and again, it is not possible to skip or rush some steps and cram the learning into a shorter amount of time.

Instructor

(see the staff page for contact information and office hours)

Teaching/Learning Method

Our class is organized into 20 learning modules, one for each day (excluding the final project).

For each learning module, you must do part of the work before class:

Our class time will organized be into two parts:

Discussion time: (held in class), approximately 30-45 minutes

The assignments will be due the day after class, but the expectation is that students will complete most of the work during class time. It’s often tempting to start the assignment by doing the parts you know, but in fact this is a poor use of your time! Start with the new/hard part (e.g., writing functions or repetition), and you can get help during the workshop time. Finish up the familiar/easy part on your own (e.g., inputs from the user and formatted output).

Workshop time: (held in class), approximately 75-90 minutes

After class, you will:

Online Textbooks

How to Think Like a Computer Scientist with Python 3 by Peter Wentworth, Jeffrey Elkner, Allen B. Downey, and Chris Meyers

Specific readings will be assigned each week. To get the most out of class time, you should read the assigned sections BEFORE coming to class.