User Tools

Site Tools


PHYS 2660 Syllabus

Syllabus Computers are a valuable tool for research in the physical sciences. Whether one is working on a small amount of data analysis on your personal computer, or harnessing the distributed power of a global network of computers to tackle an otherwise intractable task, skill in using a computer's power in problem solving can be immensely beneficial in a scientist's career.

Good programming skills are as essential as a strong foundation in mathematics and other laboratory techniques to explore the many questions in modern scientific research. Beyond good programming, one must be able to understand what computers are capable of when solving problems – and what their limitations are. Think of a computer as a valuable tool for conducting scientific research; in order to derive the most benefit from this tool, one needs to understand not only how to use it but also when it is appropriate and how to understand and utilize the result.

Physics 2660 covers the application of computers to solving basic problems in physical science, including an introduction to the Linux operating system, programming in C, use of external libraries, and implementation of basic algorithms with a focus on numerical methods, error analysis and data fitting, and simulating physical processes. We will also touch on extending our skills to C++, however the emphasis will be on learning and using C.

Prerequisites include one semester of physics and one semester of calculus. No previous computer experience is required. Note however for those who do not have prior programming experience, this class teaches basics of C programming – do not underestimate the time commitment to learn it. Students with more than one semester of programming classes or with equivalent experience in C or C++ should enroll in Phys 5630 rather than Phys 2660 to explore topics in computational physics.

In PHYS 2660 you will learn to work with GNU/Linux-based computer systems and to write useful computer programs. Why Linux? Linux-based computer systems are a mainstay in the world of scientific computing. In any laboratory setting where the research requires large amounts of data processing or computationally intensive calculations, you will routinely find a Linux-based cluster of computers handling the workload. Nearly 90% of the world's top performing computer systems operate on Linux. And Linux is the overwhelming choice for building world-wide high performance Computing Grids.

This class provides a first introduction to programming in a scientific problem-solving setting. We concentrate on features of the C programming language to teach the basic programming skills you need to put your computer to work. We may introduce certain features of C++ as the semester progresses, but this course will concentrate on developing programs using procedural methods common in C programming.

Main topics covered

  1. Introduction to Computers/Linux
  2. C Programming Basics
  3. Programming style and techniques
  4. Use and construction of code libraries
  5. Numerical methods for differentiation, integration, iterative solutions, root/maxima/minima finding
  6. Visualization of data distributions
  7. Fitting models to data
  8. Simulation and Monte Carlo modeling of physical processes

Course Structure

PHYS 2660 is a very hands-on course. You will learn the basics of programming and scientific computing methods by completing numerous exercises throughout the semester. Most topics will be introduced in the Tuesday lecture. Preparatory readings will help you understand and derive the most benefit from lecture. In a Thursday lab section you will write programs based on the lecture material. Weekly homework assignments will build on the lecture, lab, and previous homework projects. There will be a mid-term exam as well as a final.


See the Texts and Reserve Book List for more information on the required and recommended textbooks for this class.

Grading Criteria

Lab attendance and participation is an important part of this class. A short exercise or quiz may precede some labs or classes. There will be two exams. The first will cover elements of Linux and most of the C programming language, the second will focus on applications of programming techniques to study physical systems.

Grade Categories

The breakdown of grading categories will be as follows:

  • Lab/class participation and quizzes: 15%
  • Homework assignments: 40%
  • Midterm 20%
  • Final 25%

General Policies


Each student is responsible for all course information announced in the lecture or labs, posted on the class website, or sent via email – pay attention to your email!


Each student must register for a laboratory section. You must be on time and attend your registered section. Time is limited in the lab sections, and since you will generally work in teams, we must respect the schedule for the benefit of all students. Attendance will be taken at the beginning of each lab section. Students arriving after attendance will be counted as late, arriving more than 15 minutes late will be counted as a miss.

Late Arrival Policy: Two late arrivals will count as one missed lab.

Missed Lab Policy: There will be no makeup lab sessions. We allow two missed labs for any reason (illness, emergency, schedule conflicts, etc.) Each additional missed session will result in a 20% penalty on the lab portion of the grade. Note that 15% of your course grade is based off participation in labs. Skip at your own risk.

Supervised Lab Time

We will provide a few hours a week of TA supervised lab access for working on your assignments. Times will be posted on the main website.


The homework will mainly consist of writing computer programs and submitting your final work for grading. Homework will generally be assigned on Thursdays and will be due the following Thursday. In general, the homework will be submitted electronically and occasionally a printed copy of your source code will be due at the beginning of your lab section. Read homework assignments carefully. All work must be submitted following the instructions properly. Assignments are to be pledged. Late and/or un-pledged homework will not be accepted. A common electronic submission deadline will precede the start of the lab sections. Except for extreme events, lack of computer availability or network disruption will not be accepted as valid excuses for late assignments. Start your work early for each assignment! The homework deadlines will be strictly enforced. If you are unable to complete a particular assignment on time, you should submit any partial solutions for credit, then study the posted solutions for that assignment and move on to the following week's work. Homework grading questions should be addressed initially through your TA.

Exam Schedules

Midterm: Given in the evening, 7pm on Tuesday 20 March (updated date on 2 March 2018). CLEAR YOUR SCHEDULE FOR THIS EVENING EXAM! Except for extreme circumstances, no makeup exams will be offered.
Final: Provided in class at last Tuesday lecture (Tuesday 1 May, 2018). Due back

  • electronically by Thursday 10 May at 09:00am
  • hard-copies can be submitted Thursday 10 May between 08:00-10:00am in room 022-C, our computer lab.

Honors Policy

All homework assignments, quizzes, and exams are pledged. You are encouraged to discuss problems and strategies, but copies of your program assignments or parts thereof may not be exchanged with other students. Unless stated otherwise, written programs are to be the sole work of each individual student. You may not share your assigned homework programs with other students.

It is very easy to cheat in this course. Don't do it. Cheating – copying solutions, seeking direct input from outside resources, copying other student's responses, doing less-than thoughtful work – all these constitute cheating and will dealt with harshly if discovered.

This is a great class with many things to learn – do it properly and you will be rewarded in the end with lots of new skills and knowledge!

syllabus.txt · Last modified: 2018/03/02 16:18 by neu