• About Us
    • Leadership
    • What is Computational Biology?
    • Computational Biology Careers Website
    • List of Educational Programs in Computational Biology
    • The Hillman Center
    • History
    • CBD at a Glance
    • News and Events
      • News
      • Calendar
      • Departmental Seminars
      • Meetings
  • Education
    • Ph.D. in Computational Biology
    • M.S. in Computational Biology
    • Undergraduate Program in Computational Biology
      • Why Major in Computational Biology?
      • Degree Requirements
      • Sample Course Sequence for Computational Biology Majors
      • Guidelines for Transfer into SCS
      • Visit Us
    • Minor in Computational Biology
    • Courses Offered
      • Undergraduate Courses Offered
      • Graduate Courses Offered
      • Course Profiles
        • 02-201/601 Programming for Scientists
        • 02-250 Introduction to Computational Biology
        • 02-261 Quantitative Cell and Molecular Biology Laboratory
        • 02-402/702 Computational Biology Seminar
        • 02-425/725 Computational Methods for Proteogenomics and Metabolomics
        • 02-450/750 Automation of Biological Research: Robotics and Machine Learning
        • 02-500 Undergraduate Research in Computational Biology
        • 02-510/710 Computational Genomics
        • 02-602 Professional Issues in Computational Biology
        • 02-604 Fundamentals of Bioinformatics
        • 02-613 Algorithms and Advanced Data Structures
        • 02-700 M.S. Research
        • 02-701 CPCB Course / Current Topics in Computational Biology
        • 02-715 Advanced Topics in Computational Genomics
        • 02-760 Laboratory Methods for Computational Biologists
        • 02-801 Computational Biology Internship
        • 02-900 Ph.D. Thesis Research
  • Research
    • Software
    • Faculty Research Pages
    • Computational Biology Technical Reports
    • White Papers
  • People
    • Faculty
      • Voting Faculty
      • Affiliated Faculty
      • Visiting Faculty
      • Adjunct Faculty
    • Staff
    • Fellows and Special Faculty
      • The Lane Fellows Program
      • Current Lane Fellows
      • Past Lane Fellows
      • Postdoctoral Fellows
      • Past Postdoctoral Fellows
      • Special Faculty
    • Alumni
      • Ph.D. Graduates
      • Alumni Profiles
  • Join Us!
    • Life in Pittsburgh
      • Neighborhoods Near Carnegie Mellon University
      • Things to Do in Pittsburgh
    • Positions Available
    • Apply to Ph.D. Program
    • Apply to MSCB
    • Apply to Undergraduate Program
    • Apply to be a Lane Fellow
Find us
help@cbd.cmu.edu
Computational Biology Department Computational Biology Department
  • About Us
    • Leadership
    • What is Computational Biology?
    • Computational Biology Careers Website
    • List of Educational Programs in Computational Biology
    • The Hillman Center
    • History
    • CBD at a Glance
    • News and Events
      • News
      • Calendar
      • Departmental Seminars
      • Meetings
  • Education
    • Ph.D. in Computational Biology
    • M.S. in Computational Biology
    • Undergraduate Program in Computational Biology
      • Why Major in Computational Biology?
      • Degree Requirements
      • Sample Course Sequence for Computational Biology Majors
      • Guidelines for Transfer into SCS
      • Visit Us
    • Minor in Computational Biology
    • Courses Offered
      • Undergraduate Courses Offered
      • Graduate Courses Offered
      • Course Profiles
        • 02-201/601 Programming for Scientists
        • 02-250 Introduction to Computational Biology
        • 02-261 Quantitative Cell and Molecular Biology Laboratory
        • 02-402/702 Computational Biology Seminar
        • 02-425/725 Computational Methods for Proteogenomics and Metabolomics
        • 02-450/750 Automation of Biological Research: Robotics and Machine Learning
        • 02-500 Undergraduate Research in Computational Biology
        • 02-510/710 Computational Genomics
        • 02-602 Professional Issues in Computational Biology
        • 02-604 Fundamentals of Bioinformatics
        • 02-613 Algorithms and Advanced Data Structures
        • 02-700 M.S. Research
        • 02-701 CPCB Course / Current Topics in Computational Biology
        • 02-715 Advanced Topics in Computational Genomics
        • 02-760 Laboratory Methods for Computational Biologists
        • 02-801 Computational Biology Internship
        • 02-900 Ph.D. Thesis Research
  • Research
    • Software
    • Faculty Research Pages
    • Computational Biology Technical Reports
    • White Papers
  • People
    • Faculty
      • Voting Faculty
      • Affiliated Faculty
      • Visiting Faculty
      • Adjunct Faculty
    • Staff
    • Fellows and Special Faculty
      • The Lane Fellows Program
      • Current Lane Fellows
      • Past Lane Fellows
      • Postdoctoral Fellows
      • Past Postdoctoral Fellows
      • Special Faculty
    • Alumni
      • Ph.D. Graduates
      • Alumni Profiles
  • Join Us!
    • Life in Pittsburgh
      • Neighborhoods Near Carnegie Mellon University
      • Things to Do in Pittsburgh
    • Positions Available
    • Apply to Ph.D. Program
    • Apply to MSCB
    • Apply to Undergraduate Program
    • Apply to be a Lane Fellow

02-201/02-601 Programming for Scientists

02-201/02-601 COURSE PROFILE

Return to Courses Offered

Course Level Undergraduate/Graduate
Units 10,12
Special Permission Required? (If yes, see “Notes:) No
Frequency Offered Fall & Spring
Course Relevance (who should take this course?) 02-601 is designed for first-year graduate students at Carnegie Mellon looking for an intensive but reasonably paced introduction to programming, as a foundation for further programming courses at CMU.  02-201 is designed for undergraduate students at CMU outside of the School of Computer Science who are interested in learning to program in an environment with scientific applications.
Key Topics Scientific topics covered include the following:

  1. The Ancient Greeks and fundamental mathematical algorithms
  2. Monte Carlo simulation applied to a variety of topics, including random walks and simulating a presidential election
  3. Cellular automata and Conway’s Game of Life
  4. Evolutionary dynamics and game theory, with social science applications
  5. Finding replication origins in bacterial genomes
  6. Building evolutionary trees for viruses from genetic data
  7. Using object-oriented programming to build a galaxy simulator
  8. Introductory cryptography
  9. Data visualization
  10. Protein folding

Programming topics are listed below.

  1. Imperative programming constructs: functions, if-statements, loops (for, while), switch- statements, expressions
  2. Basic data structuring constructs: variables, arrays, strings, structs, types, and pointers 2
  3. Reading and writing files
  4. How to build large programs using top-down design
  5. Basic execution and memory model (Von Neumann architecture)
  1. Linear data structures: arrays, lists, stacks, queues; binary search 

  2. Dictionary data structures: binary search trees including tree traversals (DFS, BFS, pre-, in-, post-order); hash tables. 

  3. Divide and conquer, recursion 

  4. Assertions, preconditions, postconditions
  5. Code documentation
  6. Unit tests — testing small sections of code
  7. Debugging — strategies, common errors
  8. Profiling — figuring out what’s taking so long 

  9. Bigger units of code: Modules, namespaces, packages
  10. Type interfaces and user-defined types
  11. Object-oriented programming
  12. Design patterns
  13. Parallelism
  14. Concurrency 

  15. Turing machines
  16. Halting problem and uncomputable functions
  17. NP and NP-complete problems
Background Knowledge A strong ability in high school algebra and precalculus is typically helpful, but no prior background in programming is required.
Assessment Structure

Programming assignments (30% of grade)

Exams (40% of grade)

Project (15% of grade – 02-601 only)

Pre-class exercises (7.5% of grade)

Attendance and participation (7.5% of grade)

Most Recent Syllabus  http://compeau.cbd.cmu.edu/wp-content/uploads/2018/01/syllabus_601.pdf
Sample Class Notes  http://compeau.cbd.cmu.edu/programming-for-scientists/lectures/
Sample Assignment  http://compeau.cbd.cmu.edu/programming-for-scientists/homework/
Sample Lecture Recordings  https://www.youtube.com/watch?v=I5XCvYs0tGo&list=PL6e46jdIySr-21W8XaP_kownPMbgyamMr
Course Goals/Objectives

Our first goal for this course is to make you comfortable writing your own programs and have a better understanding of how computing works, at multiple levels.

Our second goal is to convince you how much fun programming is! Writing a program is like solving a sudoku puzzle — programming tests (and builds!) your powers of concentration and logical thinking. But programming is more rewarding than sudoku because it equips you with a transferable skill instead of the ability to fill in a square of numbers.

Our third goal is to help you understand some fundamental scientific (in particular, biological) algorithms on a high-level.

Finally, for students taking the graduate version of the course (02-601), we want you to gain independence to hack your own scientific problem by planning and executing a longer programming assignment of your own choice, so that you will be capable of programming independently in the future.

Course Website http://compeau.cbd.cmu.edu/programming-for-scientists/
Pre-reqs, Cross List, Related Cross-listed with 02-201.  No prereqs.
Department Website http://cbd.cmu.edu
College Website https://cs.cmu.edu
Updated January 2018

 

Contact Us

Send Message

Contact Us

  • Computational Biology Department
  • Carnegie Mellon University
  • 5000 Forbes Ave GHC 7725, Pittsburgh, PA 15213
  • (412) 268-4671
  • help@cbd.cmu.edu
  • www.cbd.cmu.edu

Social Media

Twitter Feed

  • RT  @aaas : Enter to win the Science & SciLifeLab Prize for Young Scientists, and you could win $30,000. Learn more and enter here - https://…
  • 2 weeks ago
  • Congratulations to  @ckingsford  's Kingsford Group on 2 accepted papers to #ISMB2018 🎉🔬✍️ Read more:…  http://t.co/1S5CZi68HB 
  • 2 weeks ago

Follow @CMUCompBio

Instagram

Instagram did not return a 200.

Follow @cmucbd !

© 2018 Computational Biology Department | School of Computer Science | Carnegie Mellon University