CSC151: Programming Language Concepts (Spring 2022)
Instructor: Johanna Brewer
TA: Wakana Ninohira and Yanning Tan
Place: Bass 103
Time: Mondays, usually 1:20-4pm, occasionally 7-9:30pm
Course Overview
Bridging the gap from writing your first program to creating complex data structures can be daunting. By practicing multiple ways of solving problems with code, this class instills the skills to become a fluent programmer.

Classes follow a workshop format. We begin with a short lecture about the weekly topic, then switch to a hands-on lab followed by a head start on homework. Weekly programming assignments are designed to build coder confidence and reinforce core computer science concepts, and students submit brief retrospectives each week to reflect on their progress. The course tours a variety of languages, from the command line, to Python, to Ruby on Rails, then JavaScript, HTML, CSS and beyond. During the last month of the course, students work in pairs or small groups to develop a unique project in a language of their choosing.
Learning Goals
  • Develop awareness of how theoretical concepts are expressed in code
  • Gain experience with diverse languages (Python, JavaScript, Java, and Ruby)
  • Differentiate between imperative, declarative, functional, and object-oriented
  • Build confidence with new ways of “speaking in code”
Week 1
Jan 24, 2022
Getting comfy with your environment
Week 2
Jan 31, 2022
Running code from the command line
Hello Python (Due: Jan 30)
Week 5
Feb 21, 2022
Integrating libraries and reading docs
John Zelle. (2017). Python Programming Chap. 4: Objects & Graphics.
OTP Cipher Test Suite Repo (Due: Feb 20)
Week 6
Feb 28, 2022
Thinking like an advanced programmer
Graphical Calculator (Due: Feb 27)
Week 8
Mar 14, 2022
Spring Recess
Week 9
Mar 21, 2022
Specing a project
Russ Miles and Kim Hamilton. (2006). Learning UML 2.0 Chap. 4: Class Diagrams and Chap. 6: Object Diagrams.
Ruby Challenges (Due: Mar 13)
Week 10
Mar 28, 2022
Utilizing a framework
Ruby Game (Due: Mar 27)
Week 11
Apr 4, 2022
Storing and retrieving data
Project Plan (Due: Apr 3)
Week 12
Apr 11, 2022
Mixing multiple languages
Progress Report (Due: Apr 10)
Week 13
Apr 18, 2022
Developing (mobile) apps
Prototype (Due: Apr 17)
Week 14
Apr 25, 2022
Demoing your work!
Final Project (Due: Apr 24)