Course Level
Collection Item Type
Other Material Type

This is the first CS class for non majors and majors alike. No prior programming knowledge is required, and there are no prerequisites. This course introduces concepts such as how to solve problems by designing and implementing algorithms in Python. Specific programming concepts include: arithmetic, conditionals, iteration, functions, file IO, lists, and dictionaries. Upon successful completion of the course students should have gained the following skills and proficiencies: 

  1. Decompose a problem into a series of algorithmic steps (pseudocode)
  2. Convert pseudocode into Python code
  3. Know the proper styling guidelines for Python and follow these guidelines in code
  4. Apply Boolean logic in code
  5. Write complex conditional statements that contain one or more Boolean operations
  6. Identify when a loop is appropriate, when to use both while and for loops, and write code using these looping constructs
  7. Apply top down design to break a problem into functions and write modular code
  8. Understand the importance of lists and dictionaries and identify when it would be beneficial to use either in code
  9. Perform basic string processing and manipulation
  10. Leverage knowledge of programming to solve complex, real-world problems

Several of the assignments used this course can be found in the EngageCSEdu Collection. Links are provided in the schedule document provided below. Please note that syllabi are not peer-reviewed and are provided in the collection to provide sequencing information to collection materials.

This syllabus is from Spring 2017. NOTE: Syllabi are not peer-reviewed.


Each week students attend two active learning lectures and participate in a three-hour lab session. In the lab session, students practice solving several problems using new programming constructs covered in the active learning lectures. The first lab problem is introduced by a TA and solved collectively as a group with the TA's guidance. Then, the students are grouped into pairs and encouraged to work together to solve the remaining problems at their own pace. Students are also encouraged to ask the TA questions. Problems are typically organized from simple to complex. The last problem or two of the lab are quite challenging. Each lab is long enough that even students with prior programming experience have problems to work on. Lab sessions are typically followed by a programming assignment (PA) that requires the student to individually solve a large, complex problem that integrates most (if not all) topics covered so far in the course.

Engagement Highlights

Materials in the collection from this course make use of these Engagement Practices.

Computer Science Details

Programming Language

Material Format and Licensing Information

Creative Commons License