UNC-CH COMP 110
Introduction to Programming
T-R 2:00-3:15, in Brooks (Sitterson) room 008
Dr. David Stotts (Brooks 144, 919.590.6133)
Programming will be perhaps your first endeavor in creating
actual working things from almost pure thought.
Prerequisites
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
editors.
Texts
No text is required for purchase.
We will be using an
online text.
Course Description
The goal of this course is to teach the fundamental concepts
of programming a modern computer.
Though we will use the JavaScript language to write the
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
- written code in the JavaScript programming language
- effectively tested computer programs for correctness
- learned how to execute JavaScript programs in three different ways
- used some basic HTML webpage notation to prepare simple
Web content
- 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
Format
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
concepts.
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
programming assignments.
You may have upwards of 50-70 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 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.