UNC-CH COMP 110
Introduction to Programming
WMF 9:00-9:50, in Sitterson room 014
Dr. David Stotts (Brooks 144, 919.590.6133)
Programming will be perhaps your first endeavor
in creating actual working things
from almost pure thought.
A Word document you can print out if you wish.
High school math (not calculus). We do not assume you have any programming
experience or programming understanding coming into this class.
We do assume you have
some familiarlty with using computers, specifically web browsers and text
No text is required for purchase.
We will be using an
The goal of this course is to teach the fundamental concepts
of programming a modern computer.
programs we study, the concepts the student will learn
are expressible in all programming languages.
When the course is completed, each student will have
- been exposed to the concept of a model
- learned the major internal components of a modern computer
- practiced binary notation (the internal language of a computer)
- become more familiar with powers of 2 (the binary base)
- learned 7 fundamental concepts of programming
- effectively tested computer programs for correctness
- used some basic HTML webpage notation to prepare simple
- practiced systematic problem solving by developing programs
in a top down incremental fashion
- learned a few best practices in software development, such as
working in small increments
Proramming is Learned by Doing
COMP 110 is a hands-on course. Lectures are practical,
often comprising concept explanations paired with in-class
programming demonstrations to illustrate how to apply the
The class has a midterm exam, a final exam, and programming
assignments. The grade is based entirely on performance on both
the exams and the programming assignments.
Bricks and Brick Walls
Some of the programming assignments are what we might call "traditional"
programs. They will range from a few dozen to a couple hundred lines
long and will take you a week or so to complete as work outside class.
One of the new approaches we are using this semester is in-class
You will have upwards of 75 of these;
they will range is size from a single line of code
to perhaps a dozen or two lines of code.
I think of the in-class programming problems as "bricks", and the
larger programming assignments as "brick walls".
The bricks you practice in class will then be used to build
your brick walls outside class.
You will credit for both.
In addition to in-class bricks, you will have DIY (Do It Yourself) bricks to do at home after class.
You will get credit for these as well, and for the TAs to assist you on larger assignments, your brick
completions will have to be up to date.
In most class meetings we will study a technical concept, and I will
demonstrate how it is used with hands-on programming.
You will follow along on your PC and program the concepts with me.
Then in class you will solve small programming problems
that exercise the concept being studied;
you will submit your program solutions for "instant" grading.
The tools we use will tell you on the spot if you have programmed
the solutions correctly. If you have, then you will get a point
or two credit for the solution; if it is not correct, you will
continue working and submitting solutions until it is correct
and you receive your credit.
In some sense, this is like doing your "homework" in class.
To get credit for the many bricks you must be in class to do the
programming and submit them.
You will complement this in-class homework approach by
doing reading outside class. Think of the reading as
sort of "lectures at home". You will learn much better
if you come to class having done the reading.
To get credit for the brick walls, you will produce the programs
outside class and submit them by more traditional deadlines
for grading by the class TA.