COMP 116, Spring 2015: Introduction to Scientific Programming

A PDF syllabus can be found in the Syllabus folder in the Resources folder.

Initial Organization

Communication: Class communication will be done using Piazza. To be able to use this system please sign up using the following link:

Scheduling of office hours: We will try to schedule office hours to be most convenient for you. Please indicate your preferred times for office hours using the following doodle poll (please only fill it out once):

Emails to TAs and instructor: Feel free to contact us by email, but start your subject line with 'COMP116:', e.g., 'COMP116: Question about problem 1 on quiz'. This will make it easier for us to not loose track of the emails. If it is a question of potential general interest, please ask it using piazza.


Class hours Tuesday/Thursday 11:00am-12:15pm by Marc Niethammer 
Class room

SN 014 (Sitterson Hall)

Overall Office Hours



Marc Niethammer

Office SN219 (Sitterson Hall)
Office Hours Tyesday 12:15pm-1:15pm or by appointment
Office Phone 919-590-6149
e-mail mn -at-

Teaching assistants: TBD


Catalog Description:   COMP 116  Introduction to Scientific Programming (3).

An introduction to programming for computationally oriented scientists. Fundamental programming skills, using MATLAB and another imperative programming language (such as C). Problem analysis and algorithm design, with examples drawn from simple numerical and discrete problems. Students can only receive credit for one of COMP 110, COMP 116, or COMP 121.

Prerequisites:   Please contact us if you are concerned about whether you have the background required for this course.

MATH 231:  We assume familiarity with univariate differential and integral calculus, and the ability to manually solve a system of simultaneous linear equations.  

Computer Literacy:  Basic proficiency with using a personal computer, using a mouse and keyboard, word processing, email, and finding information off the internet is assumed. 

Laptop:  Each student needs their own laptop computer for installing and using the MATLAB software during the course of the semester. 

Postrequisites:  COMP 116 satisfies the General Education, Quantitative Reasoning requirement of 3  credit hours.  For students interested in computer science as a major or minor, most upper level and graduate classes in computer science, assume that the student has learned basic programming by taking one of the following courses:  COMP 110, COMP 116, or COMP 121. 

Topics Covered

After taking this class, students will learn to do…

Numerical Computation:  Use MATLAB for doing numerical computation: including arithmetic, algebra, calculus, working with Matrices, and solving systems of linear equations.

Programming:  Create programs to solve scientific problems using MATLAB.  

Fundamentals:  Learn the fundamentals common to many programming languages (variables, data types, flow of control, modular design, etc.).  

Debugging:  Avoid and track down bugs using defensive programming techniques

I/O:  Work with user input (or file input) and transform it into 2D & 3D graphics (or file output).


Your course grade is based on your cumulative performance on programming assignments, team project, quizzes, and exams as follows:

Practice Quiz 2%
Quizzes 18%
Assignments 18%
Midterms 32%
Final Exam 30%


You will be provided instant feedback during quizzes, assignments, midterms, and for the final exam if your solution is potentially correct. This will be done by provided test code. Note that if you receive full score for the instantaneous feedback it does not mean that you will receive a full score during grading. This is due to the fact that I will run the code you write against a different dataset, with different values and different dimensions. Therefore you will need to write code that is generally applicable rather than hardcoding solutions. At the very least you should be able to write syntactically correct Matlab code. Matlab code that does not run (for quizzes, assignments, midterms, and exams) will receive 0 points: no partial credits will be assigned for code that cannot be executed.


Practice Quiz (2%): All quizzes, midterms, assignments, as well as the final exam will be taken online using Matlab. I.e., you will use a program called fetcher to download quizzes, midterms, assignments, and the final exam and to upload your solution. This of course requires you to have a working version of Matlab and an installation of fetcher (available for download on Sakai). To make sure that everybody has a working installation, your first graded task will be to download and submit a mock quiz. I will give you the solution for it and will demonstrate to you how the download/upload works. This is extremely important, because you will have to do this over and over again throughout the course of the semester. All quizzes, midterms, and the final exam are timed. You are responsible for your own timing: i.e., your time starts when you download a quiz/midterm/final exam and I will monitor when you upload your solution. You may submit as many solutions as you like (and I encourage you to do so in case you run into technical problems with your computer – e.g., run out of battery, Matlab crashes, etc.), but only your last submitted solution will be counted! Late submissions will incur an automatic late penalty.


Quizzes (9 x 2% = 18%)There will be short quizzes, which will be made available on Thursdays (and are due at midnight) for a total of ten quizzes taken. These quizzes will not be in class, but instead you will be able to take it any time during the day the quiz is due by downloading it. You will have 30 minutes to complete such a quiz. You will be responsible for your own timing. I.e., you will need to upload a solution latest after 30 minutes. Late submissions will incur a late penalty. You are free to submit as often as you like, but only your last submission will be graded.

No makeup is given for missed quizzes, but the lowest quiz score will be dropped at the end of the term for a total of nine graded quizzes. The quizzes occur regularly to encourage students to stay up to date on learning the material. These quizzes will be taken and submitted online. We will offer a practice tutorial on how to do this some time before the first quiz so that everybody will be familiar with it.


Assignments (6 x 3% = 18%): There are a total of 7 programming assignments. Typically every other week there will be an assignment to write a program.  Doing the assignments is essential for learning how to program. Your lowest scoring assignment will be dropped for a total of 6 scored assignments.  No makeup is given for missed assignments. Assignments must be submitted before 5pm on their due date, which is typically on a Tuesday. Assignments need to be turned in online. A matlab script to do so will be provided and you will receive instructions during class on how to use it. Late assignments will not be accepted and will receive a score of zero. Remember that programs communicate with people, not just the computer, so write readable code, use brief comments to clarify your intentions and to explain how you solved the assignment.


Exams (2 mid-terms x 16% = 32%, Final = 30%): There will be two mid-terms in class and one comprehensive final exam.  You will be allowed to make use of Matlab during these exams as they will also be submitted online. If the campus is closed for any reason during a scheduled exam, then the exam will be given during the next scheduled class instead.  Late submissions will incur a late penalty. You are free to submit as often as you like, but only your last submission will be graded.



Recommended: MATLAB:  A Practical Introduction to Programming and Problem Solving, 3rd edition, by Stormy Attaway, Publisher: Elsevier, Inc, 2013. Older editions are available for very cheap. They are fully sufficient to follow the course as far as I am concerned.   

PDF icon COMP116-Spring2015-Syllabus.pdf375.22 KB