02-201 Programming for Scientists

Fall 2015

Course Information:

Course Description: A practical introduction to programming for students with little or no prior programming experience. Extensive programming assignments will illustrate programming concepts, languages, and tools. Programming assignments will generally be based on analytical tasks that might be faced by scientists and will typically include parsing, statistical analysis, simulation, and optimization. Principles of good software engineering will also be stressed. No prior programming experience is assumed, and no biology background is needed. Analytical skills and mathematical maturity are required.

Instructor: Carl Kingsford
Associate Professor, Computational Biology Department, School of Computer Science, Carnegie Mellon University.

Office: GHC 7415

Contact information for TAs and graders: Will appear on Piazza

To contact the course staff: use the Piazza discussion board to ask technical questions.

Estimated Coursework: Coursework will consist of 10-12 programming assignments, 2 midterms, some quizes and other homework assignments, and a final.

Announcements & Assignments

Homework Assignments

  1. Computational Thinking 1
  2. Computational Thinking 2
  3. Functions
  4. Random Walks
  5. Cellular Automata
  6. Drawing Pictures
  7. Spatial Games
  8. Markov Chains
  9. Protein Folding
  10. Assembly Language and Ecryption
  11. Python
  12. Java
  13. Extra Credit: Sandpile simulation
  14. Practice Programming Problems 1
  15. Practice Programming Problems 2

Lecture Notes (2015)

  1. Introduction
  2. Computer Architecture
  3. Variables
  4. Types
  5. If statements and loops
  6. Coding Style
  7. Arrays
  8. Lists
  9. Example Program: Lindenmayer Systems
  10. Maps
  11. Structures
  12. Pointers
  13. Example Problem: Simulating Ribosomes
  14. Object-oriented design
  15. Interfaces
  16. Sequence Alignment Algorithms
  17. Java
  18. The Processing Programming Language
  19. The Halting Problem
  20. Loose Ends

Lecture Slides (2014)

  1. Introduction
  2. Functions
  3. Conditionals and Loops
  4. Types
  5. More Examples
  6. Arrays
  7. Slices
  8. Stacks and Queues
  9. Maps
  10. Structures
  11. Example Program: Lindenmayer Systems
  12. Pointers
  13. Object-oriented design
  14. Go Summary
  15. Interfaces
  16. Sorting Algorithms
  17. Binary Search Trees
  18. Computer Architecture
  19. Turing Machines
  20. Python

Frequently asked questions

The following policies of 15-110 also apply to this class. This text is quoted from the 15-110 website (see 15-110):"
  • Some of my grades are missing on Autolab. What do I need to do?
    First, contact your TA and ask why all or some grades are missing. Next, if the issue is not resolved within a day or two, send an e-mail to the instructors (copy your TA) detailing which grades are missing and your lab section.
  • I must be out of town for university related event (e.g. member of a team). What should I do about my assignments?
    If you have an official excuse we will make special arrangements for you to submit the assignment, please contact the instructors.
  • I am out of town attending a family/important event . How can I submit my assignments due for the week?
    The programming assignment must be submitted online using Autolab if the submission link is active. Otherwise, you should alert the instructors and your TA that the link is not active and that you need to submit your work. The written assignment must be scanned and sent as an attachment to your TA before the due date. However, we can only allow you to do this one time during the semester.
  • I missed the in class exam because I fell sick. What should I do?
    You must immediately seek medical treatment and receive an official medical excuse. You must also contact the instructors prior to the exam or as soon as possible. If you can produce that [documentation] we can make arrangements to give you a makeup test. Otherwise, we will be unable to make any exceptions.
  • I am failing the course. Is there any extra work I can do to get a passing grade?
    Unfortunately, in a large class like ours, we cannot make exceptions. The best way to avoid this situation is to talk to one of the instructors as soon as possible to find out what you need to do. Do not wait until the last few weeks of classes to discuss your performance.
"