MPCS 56430 Introduction to Scientific Computing (Spring 2023)

Section 1
Instructor(s) Binkowski, Thomas (abinkowski)
Location Online Only
Meeting Times Wednesday 10am - 11:30am
Fulfills Elective Specialization - High Performance Computing (HPC-2)


Course Description

This course aims to introduce students to important concepts in scientific computing. Students will survey topics in variety of disciplines and explore how rigorous computation is transforming the way that research conducted, experiments are executed, and data is analyzed across all scientific disciplines.

The course will focus on applying a variety of strategies to solve research problems with a focus on scalable, reproducible, and collaborative work. This will include the creation, manipulation, and analysis of data sets and the application of complex algorithms. Students will design and implement systems that are reliable, capable of handling vast amounts of data, and utilize best practices in interface and usability design.  Students will also learn to how to effectively communicate the results of their work to different audiences through written materials and presentation and to develop and provide resources for other researchers to use.

While this course should be of interest for students interested in sciencetific research, techniques and approaches taught will be applicable to other fields.

Course Content
This course will explore the scientific computing across many disciplines, but will rely heavily on examples from computational biology and bioinformatics. This course will present a mix of practical, hands-on and theorectical approaches to scientific computing.  The topics covered in this course will include: software engineering, data mining, high-performance computing, scientific communication, mathematical models and other areas of computer science that play an important role in research.  Students will be introduced to all of the background necessary to understand the applications of field specific algorithms and software taught in this course. There is no specific domain expertise required in any field.
This course will be assignment and project based and have no exams.  The assignments will consist of a mix or literature reading, programming, modeling, and basic scientific research using online resources.  Assignments will reinforce the topics covered in lecture and will contain self-directed opportunities to allow students to pursue their personal interest and applications in the subject. A significant part of the programming assignments will utilize high-performance computing resources available from the University and from third-party vendors. Students should be comfortable working with remote resources from the command line.
Students will be required to communicate their work through live-presentations, posters, and written manuscripts and will have the opportunity to pursue a research topic of their choice for the final project.

Course Prerequisites

Core Programming

Other Prerequisites

*This course requires competency in Unix and Linux. If you attended the MPCS Unix Bootcamp you covered the required material. If you did not, please review the UChicago CS Student Resource Guide here: Students should also be prepared to supplement their knowledge as needed.
* Proficient in writing complex, networked programs in Python
* Proficient in working from the command line in a Linux environment
* Experience in non-trivial command line scripting using Bash
* Understand HTTP request-response mechanisms, including request headers and response codes
* Comfortable working with remote APIs and reading documentation
* Comfortable working with versional control using git

Overlapping Classes

This class is scheduled at a time that does not conflict with any other classes this quarter.

Eligible Programs

Masters Program in Computer Science MS in Computational Analysis in Public Policy (Year 2) MS in Molecular Engineering MA in Computational Social Science (Year 2) Bx/MS in Computer Science (Option 2: Professionally-oriented - CS Majors) Bx/MS in Computer Science (Option 3: Profesionally-oriented - Non-CS Majors)