CSC 1024 Introduction to Computing (Fall 2026)

Welcome!

We’re going to study the fundamentals of computing and programming in this course. 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 (TypeScript).
  • To use computing and data analysis to understand societal phenomena and topics that we’re interested in.

This course will involve programming assignments (“homeworks”), quizzes, and a final programming project which will be worked on in teams.

No prior programming experience is required or assumed.

  • Instructor: Dr. Ayaan M. Kazerouni
  • Office hours: See my homepage for current office hours and location.
  • Canvas site: I’m teaching two sections of this course; both are using the same Canvas site.
    • Meeting times and location are listed in Canvas.
  • EdStem forum: You’ll need the invite link from Canvas before you access the forum for the first time.
  • Course schedule ↓ (Check this often!)

Learning objectives

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

  • Trace and write TypeScript programs that use data structures, functions, and control flow.
  • Design, implement, and test programs in TypeScript focused on data analysis and visualization.
  • Use computing to explore and communicate about societal phenomena or other topics that interest you.
  • Work in a team to develop software.

Community and classroom expectations

Our classroom is meant to be a place 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.

My teaching is interactive during lectures. There will be frequent small group discussions and submittable exercises, and I am also likely to call on individual students. If I call on you, it’s totally okay to get an answer wrong or to not know the answer (indeed, this is probably a sign that I have moved too quickly or been unclear about something). However, if being called on is likely to be uncomfortable or disruptive for you, let me know.

I don’t allow the use of laptops (or generally, “upright screens”) during class without special dispensation. For in-class exercises that require a computer (e.g., programming exercises, or following along with my lecture by writing code yourselves), I’ll ask you to get your laptop out and then put it away again. There is plenty of evidence that suggests that laptops and other devices are distracting not only to the student using them, but also to those around them. Additionally, taking handwritten notes tends to lead to better learning outcomes.

If you need a laptop to take notes in class, please talk to me. I understand that there may be situations where it’s not feasible to completely abstain from using a laptop in class.

Assignments and grade breakdown

Assignment type and frequency % of final grade
5–6 Homework assignments 45%
5–6 in-class quizzes 20% (3–4% each)
Final project 20%
Attendance and engagement 15%
Total 100%

Details about each of these components are below.

At the end of the course, I will round UP your final numerical score and turn that into a letter grade using the following scale:

  • A >= 93
  • A– >= 90
  • B+ >= 87
  • B >= 83
  • B– >= 80
  • C+ >= 77
  • C >= 73
  • C– >= 70
  • D+ >= 67
  • D >= 63
  • D– >= 60
  • F < 60

Homeworks

Frequency: 1 every 2–3 weeks

These assignments are meant to give you hands-on practice with the concepts we talk about during class time. You’ll work on these mostly outside of class, or during activity periods1 if you’ve completed the day’s assigned exercises. You’re allowed and encouraged to talk to your classmates about these assignments, but any code you turn in must be your own.

All programming assignments for this course will be done in Observable Notebooks, an online programming environment. We’ll go through the setup process together for the first programming assignment.

Late policy: If you think you can’t get a homework in on time, talk to me beforehand. I’m usually okay with delays of a couple of days, but I need to know that they are happening so I don’t start grading incomplete work.

Quizzes

Frequency: 1 every 2–3 weeks

Roughly every 2–3 weeks, we’ll have a handwritten quiz during the activity period. (I’m aiming for every two weeks, but also want to avoid giving you many things due on the same day; see the schedule.) Each individual quiz is worth a pretty small percentage of your final grade in the class. Their purpose will be to give you and me a solid understanding of your understanding of the course material.

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

Quizzes will be timed, each about 10–15 minutes long. They’ll typically include conceptual questions, code-reading questions, and very occasionally code-writing questions (in which cases I’ll be pretty lenient about things like syntax issues).

Final project

Frequency: 1 (with two milestones)

In groups of 2–4, you’ll work on a programming project during the last third of the semester. You’ll create a web-based report to communicate data-based insights about a topic of your choosing, using real data and visualizations to make your case. Further details will be discussed in class.

Attendance and engagement

Frequency: Ongoing throughout the term

While there’s no explicit attendance policy for this course (i.e., I won’t literally count how many times you come to class), I do strongly recommend that you come to every class session. Here are some reasons:

  • Class is just better with all of you there!
  • We’ll often have graded exercises that must be completed during class time (these will be the bulk of our activity periods). If you miss too many of these, you would jeopardize your final course grade.
  • 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.
  • Anything I say in class is fair game for quizzes (within reason of course).

If you’re unable to attend class for some reason, drop me a note to let me know. If there’s an in-class exercise that day, in some cases I can give you an opportunity to make it up. If you face an emergency, don’t worry about our class. Once you’re able to, talk to me and we’ll work together to catch you up.

Communication and getting help

You have a number of people and resources you can turn to for help or support in this course.

Me

“Office hours” are hours set aside for you (students) to visit my office to ask me questions. No appointment needed! (Seriously, if you don’t stop by, I’m just hanging around wasting time.)

Please stop by whenever 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 activity periods are also a good time to ask me questions.

Beyond that, all asynchronous communication for this class will take place in our class 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 (or from a classmate).
  • 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 me.

Your peers

I strongly encourage you to talk to your classmates about coursework. For example, feel free to discuss with them how they approached homeworks—just don’t copy each other’s code!

We’ll also have plenty of opportunities for collaborative work this semester (the final project certainly, and also in-class exercises throughout the semester).

CSSE Tutoring Center

Additionally, you can visit the CSSE Tutoring Center, where older students hang out and answer questions from students taking early classes.

The Tutoring Center runs on every week day from 2–8pm in Building 14 room 309. No appointment is needed to visit.

The tutoring center is a welcoming space where you can work on your assignments with your classmates (whether or not you need help!), and where you can ask questions to students who were in your shoes not so long ago.

While the tutors may not have taken our specific class before, they will be willing and able to talk through homeworks conceptually.

Generative AI policy

❌ You MAY NOT use AI tools to generate code for you for homeworks, projects, or quizzes, unless explicitly asked to do so in the assignment 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 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 need any accommodations to help you learn most effectively, please let me know how I can support you. You should also contact the Disability Resource Center and work with them to outline a plan.

Course schedule

This schedule is tentative! If things change as we go (which they will!), I’ll update it.

Assignments and quizzes will appear in Canvas with deadlines. This schedule shows the major assignments (homeworks, projects, and quizzes). In addition to these, most activity days (Wednesdays) and many lecture days (Mondays) will have small in-class exercises interspersed throughout the session.

If deadlines listed here conflict with deadlines in Canvas, the Canvas deadlines take precedence.

Week Date Topic Assignments
1 Monday, Aug 24 Course introduction

Class materials: Slides
Week 1 stuff:
- Introduce yourself
- Getting to know you survey
- ACM Code of Ethics reading quiz
  Wednesday, Aug 26 Expressions and evaluation
Observable notebooks

Class materials: Worksheet | Notebook
 
2 Monday, Aug 31 String expressions

Class materials: Worksheet | Notebook
 
  Wednesday, Sep 2 Boolean logic
Variables
HW 1: Variables and data types
Quiz
3 Monday, Sep 7 NO LECTURE LABOUR DAY
  Wednesday, Sep 9 Abstraction and composition
Arrays
Objects
HW 1
HW 2: Arrays and objects
4 Monday, Sep 14 Array operations  
  Wednesday, Sep 16 Composing array operations Quiz
5 Monday, Sep 21 Functions  
  Wednesday, Sep 23 The function design recipe  
6 Monday, Sep 28 Higher-order functions  
  Wednesday, Sep 30 Higher-order functions: map and filter HW 2
HW 3: Processing datasets with TypeScript
7 Monday, Oct 5 Higher-order functions: sort and reduce  
  Wednesday, Oct 7 Higher-order functions: sort and reduce Quiz
8 Monday, Oct 12 Data visualization
Why visualize?
Grammar of graphics
 
  Wednesday, Oct 14 Introduction to Vega-Lite HW 3
9 Monday, Oct 19 Perception for visualization P1: Project proposal
  Wednesday, Oct 21 Vega-Lite: Transformations/aggregations Quiz
HW 4: Data vis with Vega-Lite
10 Monday, Oct 26 Ethical visualization P1
  Wednesday, Oct 28 Vega-Lite: layering and concatenating P2: Final deliverable
11 Monday, Nov 2 Tidy data  
  Wednesday, Nov 4 Preparing data for use with Vega-Lite HW 4
HW 5: Data wrangling
12 Monday, Nov 9 More on data wrangling  
  Wednesday, Nov 11 NO ACTIVITY VETERAN’S DAY
13 Monday, Nov 16 Wiggle room  
  Wednesday, Nov 18 Project work time Quiz
HW 5
Monday, Nov 23 NO LECTURE THANKSGIVING BREAK
  Wednesday, Nov 25 NO ACTIVITY THANKSGIVING BREAK
14 Monday, Nov 30 Wiggle room  
  Wednesday, Dec 2 Project work time  
15 Monday, Dec 7 Wiggle room  
  Wednesday, Dec 9 Final project presentations P2
  1. The course is made up of lectures (Mondays, 1 hr) and activities (Wednesdays, 2 hrs). Mondays will typically involve a conceptual introduction for a topic, and Wednesdays hands-on practice as well as unstructured time to work on assignments, with some deviations from this pattern.