CSC 123 Introduction to Community Action Computing (Fall 2025)
- Overview
- Info and links
- Learning objectives
- Assignments and grade breakdown
- Communication and getting help
- Academic Honesty
- Accessibility
- Classroom climate
- Course schedule
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:
- To build community within this cohort of CS students.
- To learn the basics of programming using a general-purpose programming language.
- To apply computing to help with community action projects. Community action has many definitions—in this course, we will use computing and data analysis to understand societal phenomena.
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.
Info and links
Course and instructor info:
- Professor: Dr. Ayaan M. Kazerouni
- Office hours: See my homepage for current office hours and location.
- Canvas website for this course
- EdStem forum (You’ll need the invite link in Canvas to access it for the first time.)
- Course schedule (Check this often!)
Learning objectives
By the end of the quarter, I aim for you to be able to:
- Design, implement, and test programs in TypeScript focused on data analysis and visualisation.
- Trace and write TypeScript code using data structures, functions, and control flow.
- Use computing to explore and communicate about societal phenomena.
- Work in a team to develop software.
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,
- There will occasionally be graded activities in class that you must be present to complete.
- There is no textbook that we’ll follow, nor are there usually slides. I’ll upload the code examples I discuss in class, but studying from them will be difficult without the surrounding context you would receive by attending class.
- My teaching is interactive; I rely on input from students to drive class sessions, particularly while live-coding. If you’re not present, you’re missing your opportunity to ask questions that you want to ask.
- Anything I say in class is fair game for quizzes (within reason and unless specified otherwise).
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.)
- Please ask all course-related questions on the forum, unless you are sending me documents or files of some kind. I get a lot of email, and I don’t want your emails to get lost in my inbox. Posting on the forum guarantees that you get a timely response from me.
- The forum will be a searchable index of questions. This can save you a ton of time when you’re working on something and need a question answered. If you have a question, chances are others have that same question. So this will also help me avoid answering the same question multiple times.
- You can ask questions anonymously if you prefer. You will be anonymous to the rest of the class, but not to the course staff.
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:
- Providing a correct answer in all cases, or
- Serving your learning needs.
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:
- We are not code snobs. We do not assume knowledge or imply there are things that somebody should know.
- After our own work is complete, we support one another’s learning by sharing our expertise generously if invited to do so.
- We consistently make the effort to actively recognize and validate multiple types of contributions to a positive classroom environment.
- We strive to contribute meaningfully to group work.
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 functionsfilter |
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) |
Interfacessort |
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 |