Interactions with computers are ubiquitous throughout the sciences and engineering, and a general and working knowledge of the structure and architecture of computing languages and interfaces to programming are critical tools for scientists today. Moreover, learning a computer language, writing computer code and translating basic mathematical expressions into algorithms are skills that strongly enforce problem solving and logic and reasoning skills. This course is designed to address these issues through the systematic exploration of computer programming languages and environments. Homework assignments are structured to engage the participants in learning the basic skills that are necessary to interact with computing environments, and specifically Unix, as well as introduce key programming languages and paradigms. The course will be structured as a “working laboratory” with students working individually and as teams to solve the assigned homework problems.
Course Requirements:
This course is designed such that most of the traditional in-class time is spent working on programming exercises or independent projects, which can be effectively be done in the class room or remotely, either synchronously or asynchronously. Most classes start with a brief presentation going over concepts relevant to the day’s exercises. This will be available online as a recorded presentation and as powerpoint slides. We will also use an online interface (probably discord or slack) that allows for both synchronous and asynchronous interactions between course participants.
Intended Audience:
Students interested in learning how to utilize computer programming as a tool in the natural sciences.
Class Format:
This course will be offered in a hybrid format. Students who wish to participate fully online are welcome to do so.