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. 

Organizational

Class Hours: MWF 1:00-1:50 PM FB 007 (Fred Brooks Building)
Instructor: Vishal Verma
Office Hours:  MW 3-4pm SN328 (Subject to change)
Office: SN328 
Office Phone: 919-962-1869 

Email: < last name>@cs.unc.edu
Meetings: We will have an in class lab every Friday and short programming exercises interspersed within the lectures. Bring your computer.

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

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.  

Note: Students can only receive credit for one of COMP 110, COMP 116 or COMP 121

Topics Covered: After taking the class, students will learn to do:

MATLAB software:  I will distribute copies of MATLAB 7.12, and help students install it on their laptops, during the first in class lab session. (UNC has a site license that makes MATLAB 7.12 available to all UNC students; for information and ordering, see http://help.unc.edu/3684): MATLAB is also available in the computer labs on campus (http://help.unc.edu/1871) or you can install and run it on your own computer.

Grading:

Etiquette: With the exception of laptops used to take notes or run MATLAB, please keep electronic devices (e.g., cell phones) off or silenced during class.  Class participation counts towards your final grade and I reserve the right to dock points for improper etiquette.

Collaboration: Collaboration on assignments IS encouraged. However, what you hand in must be your own writing/typing. Good scholarship requires that all collaboration must be acknowledged. Thus, if you collaborate on the solution of a problem set, I expect that you list your collaborators at the top of the page. Collaboration on in-class evaluations (quizzes, midterms, final) is, of course, a violation of the Honor Code

Learning a programming language is like learning spoken language -- this has several implications for how to study for this class: 

• In my experience, texts and lectures alone are insufficient—one must spend time using a language to make it one’s own. The regular quizzes are designed to encourage practice in MATLAB.

• Keep a record of things you learn in the lab, lecture, and recitation sections. Whether this is a formal lab notebook, or a small diary or PDA for “new vocabulary”, find a way that works for you to record your insights and ideas. 

• There is always more than one way to say something, but some ways will be more “elegant” than others. You learn to recognize elegant expressions as you become more familiar with a language and to use them as you become more skilled. 

• Languages classes are cumulative; don't fall behind. Ask for assistance from your fellow students or from me, especially if you find yourself struggling.