Welcome!
COMP_SCI 111
About Me - Prof. Connor Bain
Undergrad at the University of South Carolina in Computer Science, Math, and Music
MS/PhD from Northwestern University in Computer Science and Learning Sciences
I'm the Faculty Chair at Willard Residential College
Other classes I teach:
CS 110 - Introduction to Computer Programming
CS 212 - Mathematical Foundations of Computer Science
CS 396 - Communicating Computer Science
CS 397/497 - Pedagogical Design in CS
My research focuses on the idea of computational literacy (both from a design and a cognitive perspective). My in-person office is Tech L374 but online we'll be using Piazza and Zoom.
The goal of this class is not to manufacture expert programmers. Our goal is to build your computational literacy–your ability to see the world as computable. We'll do this by learning how to reason about and design computer programs.
Course Tenets
This is a learning community
Lecture 0
What is computation? + Course Overview
Plan for Today
What’s the information revolution?
The first tool that strengthened the power of his brain rather than his arm.
Cultural changes?
but what is computing?
The functional model of computation
A computation
input(s)
output
COMPUTE
The functional model
f(input) = output
Question answering
Q: What’s seven plus three?
Pretty much everyone agrees that this is a case of computation
A: Ten
What’s <really-big-number>�plus <other-really-big-number>?
What’s different here?
Behavioral equivalence
speech
speech
writing
writing
add1
add2
write
read
What do we compute with?
Everything in this lecture is data
Programmability
Who can program?
Course Overview
COMP_SCI 111
Intro programming sequence
By the end, you’ll know all the basics of CS as well as have experience with a number of different programming languages.
This course
Updates for Fall 2026
Intro programming sequence
Functional programming
What if I’m interested in CS but I don’t want to major in it?
There are several other formal options for you to consider:
big course ideas
Computation is a tool
Computation is a medium of expression
Computation is language for biology
Computation is language for art
Computation is language for psychology
Computation is language for…
Computation is a playground
Major course themes
Aesthetic values in program design
Programming as com/position
https://youtu.be/BC7P89dw9HQ?si=x1I6PcHaAAuNhHQ9
Skill Building
1. composing programs
2. decomposing / debugging programs
3. communicating about programs
administrative stuff
found in the syllabus!
Please read the syllabus carefully. Additionally, take a look at the posted "recommended" schedule.
Academic Integrity
Other Class Resources
Difficulty curve of the course
Writing
functions
Lists and
higher order functions
Recursive functions
Imperative programming
and object-oriented programming
Data Flow Diagrams
The functional model of computation
A computation
input(s)
output
COMPUTE
Programming is a psychological discipline
Objects
Everything is an object
Objects and computation
When we do computation, we traffic in objects
Types of Objects (aka Data Types)
object
number
integer
float
function
point
color
picture
string
boolean
exception
contract-violation
arity-mismatch
Calls and data flow
Function calls
Data flow diagrams
Changing the inputs changes the output
Except when it doesn’t
Chaining calls
Chaining chains
A single object can be used as input to many functions
Order of inputs (usually) matters
Different diagrams can produce the same result
Computers are literal-minded
What versus how
What versus how
Gives the first however many
characters of the input string
Big ideas