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
-
- Aaron Stevens
Senior Lecturer
(see the staff page for contact information and office hours)
- Aaron Stevens
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:
- Prepare some Python examples (i.e., watch some short videos, and type up the example(s) and get them to run locally, on your own computer).
- Reading some assigned sections in the textbook or other online readings.
- Submit the examples for the day on Gradescope, as evidence of your preparation.
- Read the assignment of the day. Read this before class, so you are prepared to ask questions during class time. You may begin before class!
Our class time will organized be into two parts:
Discussion time: (held in class), approximately 30-45 minutes
- We will begin class by having a brief discussion about the concepts and examples.
- We will do several short multiple-choice quiz questions about the new material you’ve learned for the class.
- We will introduce the new assignment for the day, and answer general questions about the concepts, inputs, and outputs.
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
- Students will work mostly independently on the assignment. You may talk with each other, ask/answer questions about the requirements, Python syntax and error messages, algorithms, etc. (Each student must write their own code.)
- The course staff (instructor, teaching assistant, and undergraduate course assistant) will circulate among the students to answer questions and provide one-on-one consultations to assist with writing and debugging your work.
After class, you will:
- Finish up remaining work on the day’s assignment.
- Submit your work to Gradescope by 9pm the following day.
- Begin preparations for the next class.
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.