CSC-105: Thinking With Machines

Meetings

Tuesdays and Thursdays, 2:30pm - 3:45pm in Riley 106

Office Hours

Objectives

This course is a hands-on, project-based introduction to computer science using large language models (LLMs) and AI agents. By the end of the term, you should be able to:

  • Explain how computers work
  • Think like a programmer
  • Explain how modern LLMs and agents work
  • Use AI to learn and think more clearly
  • Evaluate AI critically and ethically
  • Build and deploy real-world projects using modern agentic tools and models

Course Format

We meet twice a week for 75 minutes each time. Tuesday classes focus on learning a new concept or tool, while Thursday classes focus on building a project using the concepts and tools we have learned.

Schedule

  • Lecture: Tuesdays and Thursdays, 2:30pm - 3:45pm
  • Project Work: Thursdays, 4:00pm - 5:00pm

Grading

Your grade will be determined by your ability to express your thinking in plain language (for example, through prompts) and to build creative, real-world projects using LLMs and AI agents.

Projects (50%)

The bulk of the course grade is based on projects. The projects are designed to be interesting, engaging, and challenging.

Exam Projects

An exam project will be given approximately once per unit (every five weeks) to assess your ability to apply concepts from class to a new problem without external help. Exam projects are completed offline using paper handouts and, in some cases, a code editor or another interactive tool.

Final Project & Exam Projects Grading

Your final project and exam projects may each be weighted up to twice as much as other projects.

Practice (25%)

Practice takes place during class work time on Thursdays and may include mini-projects, quizzes, or other activities. Some practice activities will be group-based, and your ability to contribute and collaborate with your teammates will factor into your practice grade.

Professionalism (25%)

Professionalism includes the following components:

  • Writing: Your prompts are clear, concise, and effective, and your writing is not outsourced to AI.
  • Communication: You communicate clearly and effectively with the instructor and other students.
  • Participation: You participate actively in class and engage with the material.

Behaviors that will negatively impact your professionalism grade include:

  • Late work
  • Skipping class or leaving early
  • Creating distractions during class
  • Not participating in class discussions or focusing on other things during class time
  • Outsourcing your thinking or communication to AI

Grade Scale

GradeNumeric
A+100
A95
A-92
B+88
B85
B-82
C+78
C75
C-72
D+68
D65
D-62
F50

Your unit grade is calculated as a weighted average of the three categories above, converted back to the nearest letter grade using this scale.

Logistics and Policies

If you have any questions about the course, please ask. I am here to help you succeed!

How to get help

Use in-class working sessions as your first and primary resource for help. If you need help outside of class, email me, and I will do my best to respond promptly.

Late work

Late work generally will not be accepted.* If you do not complete a project on time, you will not receive credit for that project.

* If you have a legitimate reason for not being able to complete a project on time, please let me know as soon as possible, and we can work something out.

Collaboration & Integrity

Collaborating with other humans is allowed and encouraged under reasonable conditions. You are encouraged to ask your classmates, the TAs, or me for help. You may also use online resources like Stack Overflow, online documentation, or any other resource you find helpful.

"Googling" is a critical skill for software developers, and I encourage you to use the internet to help solve problems. However, do not simply copy and paste a solution; you must understand and implement it yourself. If you use an external resource to build your solution, you must document the resource and explain how you used it.

You must both author and understand any code you submit. You may be asked at any time to explain your code to me or the TAs. If you cannot explain your code satisfactorily, you will not receive credit for it.

A note about AI

AI tools are foundational to this course. That said, we will often work analog-first, using paper or standard text editors before interacting with agents. In my experience, it is very easy to slip into a mode where you outsource your thinking and ownership of the work to AI if you are not mindful about how you use it.

Your work should demonstrate your own thinking and personal creativity. We are not "slop cannons"; leave that to amateur AI users.

Attendance

Attendance for class periods is required. If a circumstance out of your control prevents you from attending a class, please let me know as soon as possible. Furman’s attendance policy states that you cannot pass a course if you miss more than one-quarter of the class meetings. If you miss a test project, you will earn a score of zero unless your absence is excused. If you know in advance that you cannot take a test, please let me know as soon as possible so that you can take it early. Otherwise, if you are absent from a test due to an excused absence, then your final exam project grade will substitute for that project’s score. Travel plans are not an acceptable excuse for absences.

How to Succeed

Conventional learning resources such as quizzes, tests, and textbooks are not the focus of this course. Instead, you will learn by doing, with an emphasis on projects and labs.

The best way to learn is to do—and to do a lot. We will learn by…

  • Writing code, running it, debugging it, and writing more.
  • Making mistakes, fixing them, and making new ones.
  • Working with your classmates, helping one another, and learning from your peers.

Computer science is fundamentally about problem-solving.

First, you must understand the problem in a way that you can articulate in your own words. A problem well-stated is half-solved.

Next, you should plan your solution. Write down your thinking in a structured, logical way before diving into code.

Once you understand the problem and have planned your solution, it is time to start writing code. Write the minimum amount of human-readable code needed to execute your plan. Comment your code carefully so that you and others can understand what each part does.

Finally, test your code. Does it solve the problem in every relevant scenario? If not, revise, retest, and repeat until your program works under every testable condition.