Introduction to Programming

WMF 9:00-9:50, in Sitterson room 014
Dr. David Stotts (Brooks 144, 919.590.6133)


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.


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


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 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.