CSC 123 Introduction to Community Action Computing (Fall 2025)

Overview

Welcome!

We’re going to study the fundamentals of computing and computer programming this quarter. I’m super-excited to work with you!

Our goals are:

This course will involve programming assignments (“labs”), quizzes, and a programming project which will be worked on in teams. It will also involve a take-home final exam.

Course and instructor info:

Learning objectives

By the end of the quarter, I aim for you to be able to:

Assignments and grade breakdown

In service of the objectives above, we’ll have the following types of assignments and activities:

Assignment type and frequency % of final grade
6–8 lab assignments 50%
6–8 quizzes 20% (3–4% each)
Final project 20%
Attendance and engagement 10%
Total 100%

Details about each of these components is below.

Labs

Frequency: 1 every 1–2 weeks

These assignments are meant to give you hands-on practice with the concepts we talk about during lecture times. You’ll work on these mostly during lab time. You are allowed to talk to your classmates about these assignments, but any code you turn in must be your own.

All programming assignments (labs and project) for this course will be done in GitHub Codespaces, an online programming environment. Ideally, this means that you don’t need to install any software for this course—everything will be done in your web browser. We’ll go through the setup process together for the first programming assignment.

There will be 6–8 lab assignments this quarter.

Quizzes

Frequency: 1 per week

There will be roughly weekly quizzes taken on Thursdays during lab sessions. You must be present in class to take the quiz.

However, I understand that sometimes life happens and there are circumstances beyond your control. If you must miss a quiz day for some legitimate reason, please talk to me before the quiz and we will figure out alternative options.

Quizzes are timed, and you’re allowed to look at your notes or my notes while taking them, but you cannot use search engines or AI tools.

Final project

Frequency: 1

In groups of 2–4, you will work on a programming project during the last three weeks of the quarter. In essence, you will create a webpage communicating factual information or insights about a topic of your choosing, using real data and visualisations to make your case. Further details will be discussed in class.

Attendance and engagement

Frequency: Ongoing throughout the quarter

There is no explicit attendance policy for this class. However,

All this adds up to: I strongly recommend that you attend every class session!

If you’re unable to attend class for some reason, drop me a note to let me know. This way if there’s an activity that class period, I can give you an opportunity to make it up.

In addition to in-class activities, there will be small practice activities to complete outside of class—these will typically allow several attempts.

Grades from in-class activities will be worth 10% of your final grade in the class.

Communication and getting help

You are welcome (and encouraged!) to stop by my office when you have questions or just want to chat about the course. See my homepage for current office hours and location. If you can’t make the hours listed, contact me and I’m happy to schedule an appointment for another time.

Our lab sessions are also a good time to ask me questions or to discuss assignments with your classmates (within the bounds of the academic integrity policy).

Beyond that, all asynchronous communication for this class will take place in this EdStem forum. (Before accessing it for the first time, you’ll need the invite link from Canvas.)

Use of Generative AI as a help resource

❌ You MAY NOT to use AI tools to generate code for you for labs, projects, or quizzes, unless explicitly asked to do so in the lab instructions.

✅ You MAY use AI tools like ChatGPT to help you understand the material in this course.

However, tread lightly. AI tools can be helpful, and often correct. But their core functionality is to give you an answer that looks plausible, without necessarily caring about:

We learn best by struggling a little and surmounting challenges. Uncritical reliance on AI tools will short-circuit this. Sure, you will get an answer quickly, but the answer is not our objective; our objective is the process that gets you to the answer. (Just like the goal of lifting weights in the gym is not just to have the weights in the air.)

If you do use AI assistants to help you study, you’re encouraged to put them in “study mode” first. Different companies have different names for this:

These “modes” nominally do not jump straight to an answer, but try to lead you to an answer while helping you build your understanding.

Academic Honesty

Although I encourage you to have lively discussions with one another, all work you hand in must be your own work, unless otherwise specified. Programs will be compared using software that can reliably detect similarities in source code. Unless explicitly allowed to do so, do not share your code with other students or copy other students’ code. Evidence that your program or parts of your program are plagiarized from another student or an unapproved source will be taken seriously.

If you have any questions about what is or is not allowed, please ask me.

Accessibility

If you require additional accommodations to complete the required course work, please contact me as soon as possible! You should also contact the Disability Resource Center. Also let me know if I have unintentionally overlooked something that limits access to materials or activities.

Classroom climate

Our classroom and lab are to be places of learning and inclusion. Students of all ages, abilities, background, race, sexual orientations, beliefs, religious affiliations, gender identities, and origins are to be treated with dignity and respect as contributors to our scholarly environment.

I expect us to strive to build a community in which:

Course schedule

This is our planned schedule. If things change as we go (which they will!) I’ll update this page. Assignments and quizzes will be posted in Canvas so they appear in your Canvas calendars. If deadlines listed here conflict with the deadlines in Canvas, the Canvas deadlines take precedence.

In addition to the assignments listed below, we will have a short, open-note quiz taken at the start of each Thursday lab session. You should assume there’ll be a quiz unless I tell you otherwise.

WEEK DAY TOPIC REQUIRED READING  
0 Thursday, 9/18 Course introduction ACM Code of Ethics and Professional Conduct

Thinking about data
Introduce yourself
ACM Code of Ethics reading quiz, taken at home
1 Tuesday, 9/23 Abstraction and composition Abstraction and composition Code of ethics reading quiz
  Thursday, 9/25
Instructor is travelling. Class held on Zoom.
Expressions and evaluation
Introduction to TypeScript
Expressions and evaluation

What’s TypeScript?
Lab 1 (Data types, expressions, and variables)
2 Tuesday, 9/30 Expressions and data types Expressions and data types in TypeScript  
  Thursday, 10/2 More on expressions and data types
Variables
Variables in TypeScript  
3 Tuesday, 10/7 Functions Functions introduction

Function comprehension
Lab 1
Lab 2 (Functions)
  Thursday, 10/9 Functions The Function Design Recipe  
4 Tuesday, 10/14 Conditional control flow Conditional control flow  
  Thursday, 10/16 Arrays Arrays Lab 2
Lab 3 (Arrays)
5 Tuesday, 10/21 Higher-order array functions
filter
Higher-order functions: filter  
  Thursday, 10/23 map Mapping functions over arrays  
6 Tuesday, 10/28 reduce Reduce Lab 3
  Thursday, 10/30 Objects Objects and interfaces Lab 4 (Data analysis with arrays and objects)
7 Tuesday, 11/4
(Election day)
Interfaces
sort
Objects and interfaces
Sorting arrays of objects
 
  Thursday, 11/6 Data visualization with Vega-Lite Data visualization with Vega-Lite Lab 4
Lab 5 (Data visualization)
8 Tuesday, 11/11 HOLIDAY VETERAN’S DAY  
  Thursday, 11/13 A 30,000-foot view of HTML and CSS    
9 Tuesday, 11/18 Running TypeScript in a webpage   Final project
  Thursday, 11/20 Displaying data visualizations in a webpage   Lab 5
  Monday, 11/24–Sunday, 11/30 HOLIDAY FALL BREAK  
10 Tuesday, 12/2 Schedule wiggle room    
  Thursday, 12/4 Schedule wiggle room    
Finals week Thursday, 12/11 at 1:40pm FINAL PROJECT PRESENTATIONS IN THE LECTURE ROOM Final project