INFX 598i: Intro to Programming
INFX 598i: Intro to Programming
Just joining us? Start by doing the following:
- Fill out the intro survey
- Read through the course syllabus (this page) and the course policies
- Join the class Slack team! Feel free to say hello :)
- Read about the learning modules and then check out module 1 to set up your computer with required software.
- In particular, be sure to sign up for a GitHub account so you can complete exercises and turn in assignments!
Reader Shrawan Sher, firstname.lastname@example.org
Class meeting T/Th 8:30 am - 10:20 am (MGH 430)Learning Modules (GitHub)
This course introduces fundamentals of computer programming as used for data science. It will provide a level of programming knowledge ("Programming 101") for graduate students who lack that background or who need a refresher. It will introduce programming concepts such as syntax, data referencing, control structures, functions, data structures, abstraction, and debugging, as well as development tools and technologies (such as the command-line and version control). The goal is to develop skills in algorithmic thinking, abstraction, and debugging. This course assumes no previous programming background, and is intended to act as a prepatory "on-ramp" for other technical INFX courses, particularly those focusing on data science and data visualization.
In short: the goal is to get you familiar with programming concepts and abstract thinking skills used in analyzing and visualizing data, so that you are better prepared for future courses and careers. We are here to support you in mastering the skills you need to improve.
After completing this course, students will be able to:
- Navigate programming and scripting environments
- Manage and organize computer code
- Create computer scripts to analyze data and solve computational problems
- Develop and implement abstract, algorithmic solutions for solving problems
- Locate and resolve "bugs" in computer programs and procedures.
- Manipulate basic programming data structures
- Create and analyze program control flows
- Efficiently model, interpret, and manipulate data
- Programmatically generate data visualizations
Class time is intended to provide an interactive environment for students to engage with both the material and one another. We will follow a mixed lecture/exercise format that allows students to experiment with techniques as they are introduced. It is an expectation that students are actively engaged in these activities, and assist their classmates when appropriate.
Technical Learning Modules
This course has a high expectation of independent learning. While core concepts will be discussed in lecture, you will be responsible for mastering some technical skills on your own. To facilitate your self-education, we have developed a series of learning modules which cover the necessary foundational skills to succeed in this course. While these will be discussed in lecture, you will be responsible for making sure you have the technical abilities you need to complete your assignments.
As with any skill, the best way to get better at programming is to practice—and this class will give you lots of opportunities to practice.
Students will complete a series of programming assignments that assess their progress throughout the course. Assignments will be a mix of focused "problem set"-like assignments to practice with particular concepts, and more open-ended "project"-like assignments to practice synthesizing these concepts. Following the "learn to learn" objective of the course, lectures and learning modules will provide the necessary background and practice that enables students to seek out solutions for the assignments—assignments will often require students to apply their skills beyond what was been explicitly covered in lecture! Assignments will include both individual and group assignments.
Find complete assignment details and due dates on the Assignments page.
Course policies (including grading and late work policies) are on the Policies page.
This course will cover topics following the approximate schedule below (subject to change):
|1||Managing Computers & Code: Command-Line & Version control||0 – 4|
|2||Introduction to Python: Variables & Functions||5, 6|
|3||Program Flow: Logic & Loops||7, 8|
|4||Fundamental Data Structures: Lists, Dicts, & Tuples||9, 10|
|5||Processing Data: Functional Programming & Algorithms|
|6||Accessing Data APIs|
|7||Organizing Programs: Branches & Objects|
|8||Data Wrangling with pandas|
|10||Visualizing with D3|
The syllabus page shows a table-oriented view of the course schedule, and the basics of course grading. You can add any other comments, notes, or thoughts you have about the course structure, course policies or anything else.
To add some comments, click the "Edit" link at the top.