CS 302: Why behind Everyday Technologies Syllabus (Winter 2026)

Table of Contents

  1. Course Personnel & Materials
  2. Overview
  3. Learning Goals
  4. Course Administration
  5. Expectations
  6. Getting Help
  7. Evaluation
  8. Doing Honest Work

Course Personnel & Materials


Instructor: Jean Salac (she/her)

Classroom: Hulings 120

Time: 3a (Mondays & Wednesdays 11:10-12:20pm; Fridays 12-1pm)

Course Schedule: You can find important deadlines in the course schedule.

Course Staff: Jamal Omosun

Required Course Materials: I will include links to the readings either on the course schedule or Moodle.



Student Drop-In Hours (also known as Office Hours):



Overview


What makes computers computers? Are computers defined by their existing functionalities, future capabilities, individual components, or something else? Are there inherent risks to the technologies we surround ourselves with, and are there ways we can mitigate those risks to live happier lives? How do we arrive at a ‘true’ interpretation of data, and does its presentation and visualization matter?

By peering into the black-box of everyday technologies alongside the philosophical discussions they engender, we will investigate the fundamental questions computing technologies and its mind-bending pace of advancement are posing in our lives, communities, and society. Technical communication is emphasized through student-led discussions, project pages for written and visual communication, and presentations.

Prerequisities: CS111 (Introduction to Computer Science) and CS200/201 (Data Structures) or another computation-heavy course with my approval.



Learning Goals


Adapted from materials by Prof. Michael McCarrin (Oberlin)
At the end of this course, you will be able to:

  1. Learn to analyze claims regarding potential benefits and harms of developments in everyday technologies, such as GenAI and social media.
  2. Acquire an intuitive understing of core technical concepts used in digital logic, artificially intelligent systems, and social media networks.
  3. Identify key concepts at stake in contemporary discussions about AI, social media, and computation, and consider the cultural and historical context in which these concepts have been formulated.
  4. Explain technical concepts in language accessible to a generally-educated audience.

Course Administration


Moodle: All course related materials, assignments, projects, readings, and resources will be posted here.

GitHub Classroom: You will turn in most of your assignments here.

Languages: Python, HTML, CSS, JavaScript

IDE: VSCode. You should download VSCode to your personal machine. We’ll also be doing a fair amount of work in text editors and the terminal.

Default environment: I will default to Mac OSX in class, for development.

I am committed to the principle of universal learning. This means that our physical and virtual spaces, our practices, and our interactions should be as inclusive as possible. Mutual respect, civility, and the ability to listen and observe others carefully are crucial to universal learning. I strive to create an inclusive and respectful classroom that values diversity. Our individual differences enrich and enhance our understanding of one another and of the world around us. This class welcomes the perspectives of all ethnicities, genders, religions, ages, sexual orientations, disabilities, socioeconomic backgrounds, regions, and nationalities.



Expectations


Attendance: Attendance in class is expected (and is part of your grade).

Communication: I expect you to check Moodle every day for updates on activities and assignments. All out-of-class written communication will happen via the class announcement forum. Please make sure you are checking it regularly and/or have email or push notifications setup. Each class day will have preparation assignments for you to complete before class. All materials will be released at least 48 hours before they are due.

Technical Issues: If you experience significant technological problems that limit your ability to participate, please contact the ITS Helpdesk at 507-222-5999 or helpdesk@carleton.edu. For announcements of known technical issues, visit the Helpdesk portal.

Extenuating Circumstances: If your personal situation (due to COVID-19 illness or other circumstances) begins to impact your ability to engage with the course, please let me know and contact the Dean of Students Office.



Getting Help


Professor Drop-In Hours: Student drop-in hours are a great time to clear up any lingering confusion you may have about certain concepts, ask about the daily readings and assignments, work through ideas, or just talk about something in the course or in computer science generally or in life that’s piqued your interest. These time slots are for you, so use them! If for whatever reason you cannot make it to my student drop-in hours, feel free to make an appointment to see me (info at the top of this page).

Lab Assistant Hours: Lab assistant hours are another opportunity to clear up any confusion or get help with debugging your code. Lab assistant hours are held in Olin 310 and you can get help for this class whenever there is a lab assistant who is comfortable with helping with CS201 material. The lab assistant schedule, along with the classes they can help with, is posted on the doors of Olin 310 and will be posted on the Moodle site for this class once available.

Accommodations for Students with Disabilities: Carleton College is committed to providing equitable access to learning opportunities for all students. The Office of Accessibility Resources (Henry House, 107 Union Street) is the campus office that collaborates with students who have disabilities to provide and/or arrange reasonable accommodations. If you have, or think you may have, a disability (e.g., mental health, attentional, learning, autism spectrum disorders, chronic health, traumatic brain injury and concussions, vision, hearing, mobility, or speech impairments), please contact OAR@carleton.edu or call Sam Thayer (’10), Director of the Office of Accessibility Resources (x4464), to arrange a confidential discussion regarding equitable access and reasonable accommodations.

Assistive Technologies: The Assistive Technologies program brings together academic and technological resources to complement student classroom and computing needs, particularly in support of students with physical or learning disabilities. Accessibility features include text-to-speech (Kurzweil), speech-to-text (Dragon) software, and audio recording Smartpens. If you would like to know more, contact aztechs@carleton.edu or visit go.carleton.edu/aztech.



Evaluation


One of my goals for you in this course is for you to continue to develop as an independent programmer and learner. I’m much more interested in what skills and understanding you have mastered by the end of the course than the exact pace at which you master them. However, it isn’t healthy for you or me if you leave everything to the last minute. Therefore, my goal with the following evaluation metrics is to balance providing you flexibility to learn at your own pace while also making sure to spread your learning out over the entire term.


Towards that end, your performance in this class will be evaluated in two different ways according to learning goals for the course:

  1. Engagement Credits: You can earn engagement credits by (1) attending class and (2) completing preparation assignments. Almost all class meetings will have an associated preparation assignment to be completed BEFORE class time to ensure you are ready for the material covered in class. These tasks will be assessed based on completion, not correctness.
  2. Deliverables: Deliverables allow you to practice applying and implementing the concepts covered in class more deeply and with the support of the professor, prefect, course staff, and other resources. Your deliverable will be evaluated based on how closely it meets the requirements in each level outlined in the specifications grading scale below.

Specifications Grading Scale

Preparation Assignments: Since preparation assignments are meant to preview the topic we will cover each class, these are graded for completion, not based on specifications.

Deliverables: Each deliverable that you turn in will be evaluated against a checklist of specifications related to one or more of the course learning objectives. I will distribute the checklists I’ll use to assess each deliverable so that you know exactly what constitutes each of these levels.

Below is the description of the four-level scale:

  1. Insufficient Evidence: The deliverable or exam question was not turned in or does not engage with the prompt in the intended manner.
  2. Not Yet Proficient: The deliverable or exam question demonstrates progress towards the learning objective(s), but needs further work and engagement to reach proficiency.
  3. Proficient: The deliverable or exam question demonstrates achievement of the learning objective(s).
  4. Exemplary: The deliverable or exam question demonstrates achievement of the learning objective(s) at a higher level (e.g. more nuance, sophistication, etc).
Deadline Flexibility

In this course, we need to balance flexibility for individuals with structure for the class as a whole. I also want to help you avoid procrastinating to the point that you can’t get everything submitted by the end of the term. Therefore, the late work/extension policy varies depending on the type of work.

Preparation assignments are due 5 minutes after the start of the class meeting to account for slight delays in submission while enabling you to be prepared for the class it is associated with.

Deliverables have a 1-hour grace period after their posted due date and time to account for slight technical delays in submission while allowing evaluation of submissions to start soon after the due date.

If you’re staring down a deadline that you know you can’t meet, or if you’ve fallen behind, get in touch with me immediately and we’ll make arrangements. While I need to put boundaries in place for my own health and wellness, and for fairness to everyone in the class, I also want to make sure you are progressing in your learning.

Per Carleton policy, all extensions for end of term work need to go through your class dean.


Revision Policy

Learning is not a linear process, and learning involves making mistakes and learning from them. Below is the revision policy for each category of work.

Engagement Credits
You cannot revise engagement credits. You can't revise class attendance because well, you can't really go back in time and attend class. Preparation assignments are assessed based on completion, not correctness, so revisions aren't necessary.

Deliverables

  • You may revise any deliverable, except for anything due in Week 10 or Finals, as there will not be enough time to revise before grades are due.
  • You must turn in a submission that clears at least "Not Yet Proficient" within the 1-hour grace period of the deadline to be eligible for a revision, so I encourage you to turn in a deliverable, even if incomplete. "Not Yet Proficient" means that there is some evidence of an attempt to meet the learning objectives or answer the prompt in the intended manner.
  • You may revise and resubmit individual deliverables ONCE within a week after its evaluation has been released. You may NOT copy a classmate's code in the revisions for your deliverable. I reserve the right to withhold an update to your grade and ask you to explain your revisions if I suspect a violation of this policy.
  • Along with your revision, you need to submit a Google Form asking you some questions about what you chose to revise, how you responded to feedback, how the revisions improve the deliverable, etc. If you don't fill out this form, the course staff and I will NOT re-evaluate your revisions.



How Specifications Grading Translates to Course Grades

You need to clear the letter grade threshold in all three categories: preparation assignments, deliverables, and exams. This means you cannot rely on any one category to "boost" your grade

  1. To earn a D:You must have completed at least 65% of preparation assignments, 50% of deliverables at Proficient, and 50% of exam topics at Proficient.
  2. To earn a C: You must have completed at least 75% of preparation assignments, 75% of deliverables at Proficient, and 75% of exam topics at Proficient.
  3. To earn a B: You must have completed at least 85% of preparation assignments, 100% of deliverables at Proficient, and 100% of exam topics at Proficient.
  4. To earn an A: You must have completed at least 95% of preparation assignments, 90% of deliverables at Exemplary and the remaining 10% of deliverables at Proficient, and 90% of exam topics at Exemplary and the remaining 10% of exam topics at Proficient.
  5. If you are between letter grades, +/- grades will be awarded based on which letter grade you are closer to (i.e. if you're closer to an A than a B, you get an A-; if you're closer to a B, you get a B+).
  6. There will be approximately 46 engagement credits (27 class periods, not including the first day, & 19 prep assignments) and 10 deliverables.
  7. In the final determination of course grades, if you have any deliverables at "Not Yet Proficient", they can be balanced out with an equal number of deliverables at "Exemplary" to become "Proficients", e.g. one deliverable at "Not Yet Proficient" and one deliverable at "Exemplary" will balance out to two "Proficients".

Doing Honest Work


Proper Attribution

Computer Science is a collaborative discipline, & people who apply computer science concepts and skills both shape and are shaped by social, political, & cultural environments beyond themselves. You are encouraged to collaborate with your classmates to learn, but collaboration comes with additional repsonsibilities:

  • Whether you are working in a team or individually, it is your responsibility to contribute equally and fully to the final product. For example, it is not acceptable to let a teammate “finish the project” without you and put your name on it before submitting it, or work on significant portions of the project without you, or any permutation of this. When pair programming, I expect you to actively work side-by-side with your partner the majority of the time.
  • Whether you are working in a team or individually, it is your responsibility to be able to explain and/or reproduce your solution individually, if asked. If you do not understand the solution, then you did not contribute fully to the project, and this will hinder your learning of the course material.
  • Whether you are working in a team or individually, it is your responsibility to follow the written and stated guidelines for any particular project. This includes guidelines from both me (e.g. tools and resources you can use) and your teammates (e.g. when to show up for team meetings).
  • When you put your name on an assignment or deliverable, it is a contract between you, your teammates (if applicable), and me that this work represents your own work and not the work of someone else. It is never acceptable to turn in a program, or a problem solution, that you have found anywhere (on the Internet, in your textbook or another book, from a friend who took this course before) or commissioned as your own. Making cosmetic changes to someone else’s program or solution (such as changing the variable names or comments) is also not acceptable.
  • Whether you are working in a team or individually, it is your responsibility to credit any assistance you receive. If you receive assistance from anyone (another book, a lab assistant, a classmate, me), you must properly credit your source. If a piece of your program utilizes outside assistance, you might include the following in your program’s comments:
# Method to decide how much financial aid students should receive
# I used this StackOverflow post to refresh on the syntax for writing conditional statements in Python: https://stackoverflow.com/link-to-post


AI Policy

In this new age of AI assistants everywhere, we need to cautiously navigate their relationship with academic honesty together. There are many many ways that generative AI is (sort of) helping you and some are more clearly acceptable or unacceptable than others. I can’t make an exhaustive list of what is allowed and isn’t, because there is just too much and something new is going to pop up within the ten weeks of this term. I will do my best to guide you, but you also are going to need to use good judgment at times (and don’t rely on the AI’s judgment!).

If you are in a borderline situation, you could try prefacing your request with something like the following: “I’m working on a programming assignment and need some guidance. I’m not looking for the direct solution, but rather help understanding the concepts involved and strategies for approaching the problem. Could you please provide hints, explanations of relevant topics, or suggest debugging techniques based on my question, without giving away the exact code?”

Clearly unacceptable:

  • Pasting the entire assignment prompt into anything (even if you don’t use the code that comes out)
  • Using GitHub Co-pilot extension in VSCode (If you already have it, you must disable it for all course work.)
  • Submitting for credit any code that you did not write yourself (and wasn’t from the starter code). This class is about learning to write the code yourself after all!


Clearly acceptable:
  • Asking GenAI to give you practice exam questions to study
  • Asking GenAI to explain a class concept that you are struggling with (but triple check it is giving accurate information!)


Borderline (i.e. you could easily slip into unacceptable):
  • Asking GenAI to help you understand what an assignment is asking
  • Asking GenAI to help you understand a bug or error on an assignment
  • Asking GenAI a question instead of coming to drop-in hours or talking to me, the prefect, or the course staff.



Per Carleton policy, I am required to report cases of suspected academic dishonesty to the Dean's office.