Course Overview
This course teaches the principles of computer science and the effects of digital technology on society. Although digital technology may feel like a force of nature, ultimately it is people who decide how technology is developed, and how it is deployed; we are responsible for maximizing technology’s benefits, while minimizing its downsides. However, it is impossible to meaningfully discuss technology without understanding how it works. This course teaches introductory computer programming and other relevant computing skills. No prior experience with computer programming is expected. Upon completing this course, you will have a solid understanding of how computer programs are created and how information is stored digitally. You will also have developed opinions about digital privacy, technological bias, and other matters of critical importance to society.
Prerequisites
This course does not have any prerequisites. In particular, no prior experience with computer programming is expected.
Textbooks
“Blown to Bits,” 2nd edition, by Hal Abelson, Ken Ledeen, Harry Lewis, and Wendy Seltzer
Available online, licensed under Creative Commons
Additional readings will be linked from the course website.
Course Content
Material will be taught in interactive lab sessions, rather than lectures. This aligns with research showing that active learning is more effective than listening to lectures. Class will begin with a short presentation of computing in the news. Next, you will work on an assignment. Programming assignments are from “The Beauty and Joy of Computing” (BJC) curriculum. BJC is an AP CS Principles curriculum, designed to teach computer science concepts, while avoiding the learning curve of traditional programming languages. Consequently, these assignments use the Snap! block-based programming environment. Other classes will feature discussions and related activities designed by Dr. Peter Story.
Classes alternate between programming-focused and non-programming activities. Both types of activities are important: the programming activities introduce Computer Science concepts, which will help you develop an intuition about how computers work. The non-programming activities explicitly connect Computer Science to society. Alternating between the activities will give you time to get help on programming assignments, and time to complete readings in preparation for discussions. Research shows that interleaving varied activities contributes to learning.
You will also work on a final project, for which you will read and report on a societal computing book of your choice.
Activities and Estimated Durations
- Societal Computing (11 classes and ongoing)
- Effects of Digitization
- Generative Artificial Intelligence
- Protecting Your Privacy
- Technology and Mental Health
- Assistive Technology
- Copyrights
- Free Speech Online
- Computing in War
- Final Project: reporting on a societal computing book of your choice
- Introductory Programming (4 classes)
- Click Alonzo Game
- Gossip
- Modern Art with Polygons
- Follow the Leader
- Intermediate Programming (8 classes)
- Basic Games
- Making Lists
- Making Decisions
- Making Computers Do Math
- Dealing with Complexity
- Contact List
- Tic-Tac-Toe
- Drawing Fractals
- Computing Concepts (3 classes)
- Data Representation
- Computer Networks
- Cybersecurity
- Data Science (2 classes)
- Turning Data into Information
- Simulations
Learning Objectives
The course has two main learning objectives. First, you will learn the fundamentals of computer programming and digital technology. Second, you will apply this knowledge to reason about the social impact of different technologies. Computing skills you learn in this class will serve you well in other disciplines, and can also prepare you for further study in the field of Computer Science. Forming opinions about technology’s impact on society will make you an informed citizen, and may also prepare you to be an ethical developer of technology.
Course Attribute Descriptions
- First-Year Intensive (FYI): Section 1 is offered as an FYI. This course will introduce students to the expectations of college-level work. Students will practice time management, will collaborate using pair-programming techniques, and will practice their writing skills.
- A core component of the first-year intensive seminar is participation in the Clark Navigator (NAV). Your Clark Navigator is a first-year experience program led by an upper-class Peer Mentor who will build community, connect you with campus resources, and support you through your first semester toward a successful Clark career. In your NAV, you will participate in workshops and interactive sessions to develop knowledge and skills for your Clark journey. I encourage you to take advantage of the Navigator program’s full benefits. More information will be shared by your Peer Mentor. Any questions about the Navigator should be directed to your Peer Mentor or the Director of Academic Transitions (firstyearexperience@clarku.edu).
- Formal Analysis component of the Program of Liberal Studies (PLS): In this course, students will gain a solid understanding of the topics listed above, improving their formal analysis, critical thinking, and problem solving skills. These computational thinking skills will prepare students for further study in computer science and related disciplines.
- Diversity and Inclusion (D&I): Developers of technology can be susceptible to technological utopianism, the belief that new technology will necessarily produce a “better” world. Of course, we must ask: “better” in what sense, and for whom? For example, Mark Zuckerberg seems to think that deploying Facebook across the world will be uniformly beneficial. Counterexamples like Facebook’s role in the Rohingya genocide show such beliefs to be naïve at best. While there are numerous examples of technologies improving the world, there are equally many examples of technologies exacerbating existing problems and creating new ones. Those who develop and deploy technologies have a particular form of power over others, and this power can be used for good or ill. Thus, it is essential to critically analyze the potential for technology to have disparate impact, particularly on traditionally marginalized groups. For example, software products for automatically reviewing job applicants’ resumes are marketed as a way to reduce bias in hiring, but this software may be just as likely to reinforce existing socioeconomic disparities. As another example, most developers of software are sighted, and so do not consider the needs of visually impaired users. Supporting users with visual or motor impairments can be easy – as long as these users’ needs are considered at the start of the software development process, instead of only after the product has shipped. A major goal of this course is to increase awareness of computing’s impact on social issues. With greater awareness, we can push for technologies that benefit everyone, instead of just a privileged few.
These learning objectives fit well with Clark’s LEEP learning outcomes and vision of liberal education.
Engaged Hours
To get the most out of the course, regular in-person attendance is expected. As a one-credit course, you are expected to participate in 180 hours of engaged academic time over the course of the semester. Weekly time expectations are detailed below:
- Class: 2.5 hours
- Homework (assigned readings, finishing assignments, etc.): 7 hours
- Final Project: 2.5 hours
Since the semester has 15 weeks, the total time commitment comes to 180 hours.
Grade Calculations
The following percentages are tentative and may be changed at the instructor’s discretion:
- Attendance and Participation: 30%
- You are expected to arrive to class on time. You will only be counted as present if you arrive within the first five minutes of class, and stay for the duration of class.
- Assignments: 20%
- All assignments are weighted equally.
- Quizzes: 20%
- Final Project: 30%
Policies and Miscellaneous
The official administrative business of this class will be conducted by email
Explanation of absence, etc. will be processed via email so that we both have a written record of what was agreed. Feel free to discuss in person but an email follow-up is required for the official record.
Attendance is expected
If you must be absent, please contact me well in advance to let me know why you won’t be in class. Options may include attending class with the other section or remote attendance. Excused absences are reserved for medical or family emergencies, and will require make up work.
Computer use policy
You are welcome to use your own device to work on course assignments during class. However, do not use class time to work on other homework, check email, or surf the web. Such activities can be distracting to other students.
We encourage you to use the docking stations in class – this will make pair programming easier, and will make it easier for us to see your code.
Assignments are due on time
That is, at 11pm on the listed due date, with additional 59 minute courtesy time. Late submissions will not be accepted.
Plan your work accordingly: work diligently during class, ask for help when you get stuck, and seek help outside of class if necessary.
No special make-up work will be accepted after the end of the semester
In the event of a documented major medical problem, a grade of Incomplete will be given pending the submission of complete work. However, make up work “to improve one’s grade” will not be accepted.
Pair Programming
In this course, you’ll use a collaboration technique called pair programming – writing computer programs in teams of two. One partner, the driver, controls the computer. The other, the navigator, helps catch errors and keeps track of how the code being written fits into the overall plan. The navigator is also in charge of reading the lab pages out loud. Aim for equal time in each role, switching about every five minutes. To collaborate in pair programming:
- Keep talking. The driver should constantly explain the reason for using each block. The navigator should interrupt with questions: What about doing it this other way? How does this program avoid such-and-such bug? Don’t we have to deal with this requirement and that requirement at the same time? We’re pretty much repeating this other piece of code over there; could we hide that code in a block and use the same block in both places? And so on.
- Listen. Try to understand each other’s thinking before you disagree.
- Work as a team. If you find yourself being defensive about feedback, remember that nobody’s code is perfect right away. It’s the navigator’s job to find problems in the driver’s code, and when you switch places, the new navigator will repay the favor. You’re a team, not a competition.
- Work toward consensus. Don’t bargain; if you have disagreements about how something should be done, don’t say “well, you can do this your way if I can have this other thing my way.” Both partners should listen to each other’s reasons and work together to find a solution that meets both needs.
- Speak your mind and work out your differences. That doesn’t mean you should try to disagree, but if you do, you can still be friends. Work out the conflict by listening and understanding each other, rather than by giving in just to end the argument.
- Regardless of experience, take turns. Don’t let the more experienced programmer overwhelm the other partner. Make sure both partners are comfortable contributing, in either role. A group is almost always better at problem-solving than any of the people in the group is alone.
How not to do pair programming: The biggest mistake in pair programming is for the navigator to tune out and let the driver do all the work. The navigator has to be paying attention; otherwise you’re just taking turns doing the entire work instead of making use of the benefits of having two people.
Adapted from “The Beauty and Joy of Computing.”
Academic integrity: cheating and plagiarism
Academic integrity is a basic value for all higher learning. Simply expressed, it requires that work presented must be wholly one’s own and unique to that course. All direct quotations must be identified by source. Academic integrity can be violated in many ways: for example, by submitting someone else’s paper as one’s own; cheating on an exam; submitting one paper to more than one class; copying a computer program; altering data in an experiment; or quoting published material without proper citation of references or sources. Attempts to alter an official academic record will also be treated as violations of academic integrity.
To ensure academic integrity and safeguard students’ rights, all suspected violations of academic integrity are reported to the College Board. Such reports must be carefully documented, and students accused of the infraction are notified of the charge. In the case of proven academic dishonesty, the student will receive a sanction, which may range from an F in the assignment or course to suspension or expulsion from the University.
Do not, under any circumstances, copy another person’s code or show your assignment code to other students (unless they are part of your programming pair). Incorporating someone else’s code into your program in any form, or allowing someone to do so with your code, is a violation of academic regulations. In addition to standard definitions of plagiarism, with respect to this course, plagiarism is also defined to include:
- Copying any part of someone else’s assignment/program, even if you have permission and/or have modified the code
- Sharing or giving your assignment/code or even a subset of your assignment/code to another student
- Reviewing another student’s solution, solutions from the internet, etc.
- Using AI systems to answer writing assignments (e.g., summarizing the readings, writing essays, etc.)
- In this course, it’s okay to use AI for assistance with programming assignments, as long as you feel it is contributing to your learning. However, be aware that you won’t have access to AI when you take the exams.
You may not publish your solutions to this course’s programming problems in a way that could compromise their utility as pedagogical tools.
Note that I will run automatic plagiarism detection software on assignments, which I will use as a starting point to investigate suspected plagiarism.
If you have any questions about these matters, please consult the instructor.
Welcoming class atmosphere
I strive to make this course welcoming and productive for all students. Please let me know what name and pronoun you prefer to be called. Please bring any issues or concerns to my attention.
Students with Disabilities
Clark University is committed to providing students with documented disabilities equal access to all university programs and facilities. Students are encouraged to register with Student Accessibility Services (SAS) to explore and access accommodations that may support their success in their coursework. SAS is located on the second floor of the Shaich Family Alumni and Student Engagement Center (ASEC). Please contact SAS at accessibilityservices@clarku.edu with questions or to initiate the registration process. For additional information, please visit the SAS website.
Title IX Reporting
Clark University and its faculty are committed to creating a safe and open learning environment for all students. Clark University encourages all members of the community to seek support and report incidents of sexual harassment to the Title IX office (titleix@clarku.edu). If you or someone you know has experienced any sexual harassment, including sexual assault, dating or domestic violence, or stalking, help and support is available.
Please be aware that all Clark University faculty and teaching assistants are considered responsible employees, which means that if you tell me about a situation involving the aforementioned offenses, I must share that information with the Title IX Coordinator, Brittany Rende (titleix@clarku.edu). Although I have to make that notification, you will, for the most part, control how your case will be handled, including whether or not you wish to pursue a formal complaint. Our goal is to make sure you are aware of the range of options available to you and have access to the resources you need.
If you wish to speak to a confidential resource who does not have this reporting responsibility, you can contact Clark’s Center for Counseling and Professional Growth (508-793-7678), Clark’s Health Center (508-793-7467), or confidential resource providers on campus: Prof. Stewart (als.confidential@clarku.edu), Prof. Palm Reed (kpr.confidential@clarku.edu), and Prof. Cordova (jvc.confidential@clarku.edu).
Disclaimer
The instructor reserves the right to make changes to any information contained in this syllabus at any time during the semester. Any substantial changes will be announced.