COMP 14: Introduction to Programming
Department of Computer Science
The University of North Carolina at Chapel Hill
Prof. Greg Welch,, SN 234

Course Description

This course is an introduction to computer programming. The course is The primary goal is to teach you problem-solving; algorithms and their design; and fundamental programming skills. We will use the Java programming language. At the end of this course you should clearly understand fundamental programming constructs, be able to design and write basic computer programs in Java (including Java "Applets"), and apply your knowledge to other programming languages. Click here to see if the course is for you.


Students will attend semi-weekly lectures (Tu-Th, 9:30-10:45 AM, in VE268) and attend one of the Friday recitations. There will typically be weekly reading assignments from the text book (see below) and weekly computer programming assignments. The programming assignments will generally build on each other (directly or indirectly) with the final assignments leading into individual student projects. There will be written mid-term and final exams.


The homework in this course will be primarily in the form of reading and programming assignments. There are two parts to the grade for every assignment: a demonstration grade and a code grade. Prior to the start of the lecture on the assignment due date, you will visit a lab and demonstrate your programming solution to a COMP 14 Lab Assistant (LA) who will assign your demonstration grade. Subsequently, at the start of the lecture on the assignment due date, you will hand in (to the instructor) a completed assignment hand-in package. A Teaching Assistant (TA) will then complete the grading with a code grade. The complete procedure for each assignment is described here.

Individual Projects

The weekly programming assignments are designed to build toward individual semester programming projects. As such, there will not be normal programming assignments during the last weeks of the semester. Instead, students will spend the time working on their projects. The projects will have some common guidelines, along with requirements for complexity and certain features, but students will have some leeway to tailor their projects as they would like. The idea is to have some fun with this.


There will be an in-class written mid-term exam, and a written final exam during the (University) scheduled time slot. All of the material from the lectures, reading, and programming assignments are fair game for exams.


The weighting and corresponding importance of the course material is as follows:

Individual grades might be adjusted based on class participation and/or extenuating circumstances.


Every student is responsible for the material in the assigned reading, and the material covered at every lecture. The lecture topics and the reading will correspond, but will offer complementary explanations. The lectures will also be the venue for announcing and explaining the programming assignments, etc.

Every student should read their email, and visit the course web site, at least every other day.

Every student is responsible for turning in complete assignments, on time. The complete procedure for each assignment is described here.

While students may discuss general topics with each other, every student is required to do their own work. As part of this requirement, every completed programming assignment must include a standard program header with a pledge to that effect. Every student should read about the Honor System and UNC Chapel Hill, and the Honor Code Observation in Computer Science Courses. We will report apparent infractions directly to the Student Attorney General.


Course help is available from Teaching Assistants (TAs), Laboratory Assistants (LAs), and from the instructor. Refer to the course web site for office hours and locations. The LAs have expertise in using our chosen software (see below) and can help you with computer problems that pertain to using this software and the computers in general. In addition to leading the recitation sessions, the TAs will be available during posted office hours, and otherwise by apointment. While both the LAs and TAs will be cognizant of specific assignments, the TAs should be the primary source of assistance related to programming difficulties. Neither the LAs, TAs, or the instructor will answer questions that we believe provide direct solutions to programming assignments.


We will be using the Personal version of JBuilder7, an integrated development environment (IDE) developed by Borland. To facilitate installation on lab and personal machines, we have been given a specific UNC-CH license. If you want to install the IDE on your own computer, click here for download and installation instructions.


We will be using "Java Software Solutions: Foundations of Program Design" by John Lewis and William Loftus (ISBN 0201781298). You should be able to obtain this book at the bookstore or on the web. Note that we will be using the third edition, released July 31, 2002. This book is typically used in COMP 114 also, so you might get additional use out of it.

Updated: Wednesday, August 14, 2002