Systems Development for Computational Science
Computation has emerged as the third pillar of science alongside the pillars of theory and experiment. Computational science is maturing rapidly and has found considerable and significant use in supporting scientists from various disciplines (including all engineering disciplines, mathematics, physics, chemistry, finance, biology, and data analysis to name a few). Many burgeoning scientists are still taught to write "a code" for some problem and to debug when things look wrong. Given the ever-increasing complexity of software solutions to scientific problems, this old paradigm is no longer tenable and at best inefficient.
CS107/AC207 is an applications course highlighting the use of software engineering and computer science in solving scientific problems. You will learn the fundamentals of developing scientific software systems including abstract thinking, the handling of data, and assessment of computational approaches: all in the context of good software engineering practices.
The class syllabus can be found by following this link.
Updates
- 2022-08-31: Lab sections for pair-programming will be selected in my.harvard. You can prefer multiple depending on your schedule and will be assigned one of your preferences eventually. They will become available shortly. Deadline for submission is Tuesday September 6th.
- 2022-08-26: The C/C++ primer repository has been moved to https://code.harvard.edu/faw093/c_cpp_primer. Please update your local remote if you have already clone it.
- 2022-08-16: IACS orientation slides
- 2022-08-08: Registration period office hour: Thursday, August 18th 10:00am - 11:00am on zoom
- 2022-08-06: Published Homework 0 (not graded)
- 2022-07-22: Registration for
C/C++
primer is open
Teaching Staff
The preferred way to reach the teaching staff is described in the Teaching Staff Mailing List section below.
Instructor
- Fabian Wermelinger (fabianw@seas.harvard.edu)
- Office: Pierce 211
- Office Hours:
- Monday 10:30am - 11:30am (Pierce Hall 211)
- Thursday 10:30am - 11:30am (SEC 1.312-2)
Teaching Fellows
Fellow | Office Hours | Pair-Programming Sections | |
---|---|---|---|
Chenhui (Lucy) Li | chenhuili@g.harvard.edu | Fri 1:00-2:00pm (SEC 1.307) | Fri 10:30-11:45am (SEC 1.307) |
Connor Capitolo | connorcapitolo@g.harvard.edu | Wed 8:00-9:00am (SEC 1.316) | Thu 8:00-9:15am (SEC 1.307) |
Geoffrey Liu | geoffreyliu@fas.harvard.edu | Mon 6:30-7:30pm (SEC 1.316) | Mon 5:00-6:15pm (SEC 1.307) |
Haochen Yang | hcyang@fas.harvard.edu | Tue 5:00-6:00pm (SEC 1.316) Fri 7:00-8:00pm (MD 323) |
Tue 3:45-5:00pm (SEC LL2.224) Thu 6:00-7:15pm (MD 119) |
Jean-Guillaume (JG) Brasier | jbrasier@g.harvard.edu | Mon 2:30-3:30pm (MD 323) | Mon 1:00-2:15pm (MD 323) |
Kimon Vogt | kvogt@g.harvard.edu | Fri 5:00-6:00pm (MD 221) | Fri 6:00-7:15pm (MD 221) |
Lars Ankile | larsankile@g.harvard.edu | Wed 11:30-12:30pm (SEC 1.316) | Thu 6:00-7:15pm (MD 119) |
Nutan Sahoo | nutansahoo@hsph.harvard.edu | Thu 8:00-9:00am (SEC 1.316) | Thu 9:15-10:30am (SEC 1.316) |
Renhao Luo | renhao_luo@hms.harvard.edu | Thu 6:00-7:00pm (SEC 5.403) | Tue 6:00-7:15pm (SEC 1.321) |
Shuheng Liu | shuheng_liu@g.harvard.edu | Wed 10:45-11:45am (SEC 1.307) Wed 6:15-7:15pm (SEC 1.316) |
Wed 9:15-10:30am (SEC 1.307) Wed 4:45-6:00pm (SEC 6.301/6.302) |
Wenqi Chen | wenqichen@g.harvard.edu | Fri 6:00-7:00pm (MD 123) | Wed 10:30-11:45am (MD 119) |
Xinhe Zhang | xinhezhang@g.harvard.edu | Thu 4:00-5:00pm (SEC 5.403) | Tue 3:45-5:00pm (SEC LL2.224) |
Xinran (Sherry) Tang | xinran_tang@g.harvard.edu | Tue 7:15-8:15pm (SEC 1.316) | Tue 6:00-7:15pm (SEC 1.321) |
Xinyi Li | xinyi_li@g.harvard.edu | Fri 9:30-10:30am (MD 221) | Fri 8:00-9:15am (MD 221) |
Legend:
- SEC: Science and Engineering Complex, Allston
- MD: Maxwell-Dworkin, Cambridge
Please see the following files in the class
git
repository for the details:
- Office Hours: https://code.harvard.edu/CS107/main/blob/master/office_hours.xls
- Pair-programming: https://code.harvard.edu/CS107/main/blob/master/lab_groups.xls
Lecture Hours
All lectures are of 75 minutes duration. Time is given in Eastern Standard Time (Boston).
Lecture attendance is mandatory:
Time Room Tuesday 2:15 - 3:30 PM SEC 1.321 Thursday 2:15 - 3:30 PM SEC 1.321 EXCEPTIONS:
- Thursday 09/22: 2:15 - 3:30 PM, 114 Western 2111 + 2112 (an additional zoom route will be setup to SEC L2.224 to accommodate overflow in 114 Western)
Important Information
- Canvas: Is used for posting grades and other sensitive content. The class can be found on Canvas at this link https://canvas.harvard.edu/courses/108118
- Class
git
repository: All handouts in CS107/AC207 are provided through themain
repository hosted in the CS107 organization at https://code.harvard.edu/CS107/main. You can set this repository as an upstream in your private class repository or clone it once you have joined the CS107 organization
git clone git@code.harvard.edu:CS107/main.git
Updates to the main
repository are posted on the class mailing list. Your
Harvard ID is required to login to https://code.harvard.edu. You can request
membership in the CS107 organization (AC207 students join the CS107
organization as well) by sending an email to
cs107-staff@g.harvard.edu
(using your .harvard.edu
email). You
must include your
NetID
in the body of your email, which is also your https://code.harvard.edu
username (something similar to abc123
).
Once you have been added to the CS107 organization, create your own private repository inside the organization. Your private repository must have the exact name as your NetID. This will be your private class repository where you submit your homework and pair-programming exercises.
See the following tutorial to help you get started with your
git
repository:
Class Discussion Forum
We will use the Ed Discussion forum on our Canvas page as our main communication platform. Questions regarding homework, labs or lecture material must be posted on this forum and you are encouraged to reply to questions if you know the answer or you can share a useful contribution. A fraction of your participation grade is computed by how often you visit and the frequency you post on the forum.
Class Mailing List
You can optionally sign up to our class mailing list if you would like to be
notified whenever there is new class content available in the class git
repository. Replies to posts in this list will be sent to all list members.
To sign up, send an email to:
cs107+subscribe@g.harvard.edu
(subscribe by sending a blank email to this address; use the email address associated with your HarvardID)
You are required to confirm your subscription. Simply reply to the confirmation email with a blank message to complete the subscription.
Teaching Staff Mailing List
You can reach the teaching staff directly by sending your email to the following mailing list
cs107-staff@g.harvard.edu
(email sent to this list is only seen by the teaching staff; only email ending with.harvard.edu
is accepted)
You are not required to register for this mailing list but only email
addresses ending with .harvard.edu
are accepted (you will receive a rejection
message otherwise).
Getting Started Checklist
- Sign up with the CS107 organization on https://code.harvard.edu/CS107 and create your own private repository inside the organization.
- Information flow:
- Canvas → Grades and discussion forum
- https://code.harvard.edu/CS107
- Assignment submissions inside your private repository (homework, pair-programming exercises)
- Group repositories for project work
- All course handouts are published in the https://code.harvard.edu/CS107/main repository
- Need help? →
cs107-staff@g.harvard.edu
- OPTIONAL:
- Sign up on the class mailing list to receive push notifications when new content is available in the https://code.harvard.edu/CS107/main class repository.
- You can get an Ubuntu
docker
container with the necessary class tools bydocker pull iacs/cs107_ubuntu
. Note that nossh
keys are contained in that image for use withgit
. See also the docker resources page.