CHIP490 Class Syllabus Fall 2024

Instructor: Alex Harding

Welcome to CHIP 490, Introduction To Programming!

Course Philosophy

In this course, we will learn the basics of programming and collaborative coding in a health informatics environment. We will learn the Python programming language, though the basics of programming is transferable to many other languages as well.

We will learn by doing. Expect to read and write code in every class, and to have applicable exercises and small projects working with synthetic and real-world data.

Programming is something you do, not something you know. Expect to spend time outside of class learning by doing, including learning new libraries and solving problems in your day to day life. Assignments may require you to read documentation and learn new libraries, developing your own knowledge of tools in the world of Python.


Class Policies and Procedures

Web Tools and Locations

Please look at our Canvas page to find a directory of links. This class will take place on Zoom, and we will use Canvas to submit assignments and receive grades. Additionally, we will use Piazza to ask questions and collaborate.

Attendance and Participation

Please be as on time as possible for lectures. Repeated absences will be penalized. I'm happy to speak about any extenuating circumstances - feel free to email me/set up office hours to discuss. I understand that participation in a remote course can be difficult, so when considering participation for final grades, I will also take participation via the class Piazza forum into account.

Lecture recordings and slides will be posted to Canvas within 24 hours of each lecture.

Assignments and Grading

Assignments are due by the start of class the day they are due. Assignments will be submitted via Canvas. Late assignments will be penalized 10% for each calendar day they are submitted post due date, and will not be accepted more than three calendar days late.

Assignments will be graded out of 10. Assignments will receive 8 (eight) points for successfully meeting listed acceptance criteria, and up to 2 (two) points for code readability and quality.

There are three types of assignments in this course:

Your final grade for the course will be weighted as follows:

Materials

It is expected that students have a modern computer capable of running Zoom, a web browser, and the Python programming language (which we will install in class).

There are no paid materials required for this course. We will however use the following free, online, interactive version of Think Python (3rd Edition). If you would prefer a physical copy, see the author's website for links to purchase. All software used for this course will be free and open-source.

Academic Integrity and AI

All assignments and exams are to be completed individually except where otherwise specified. All students must adhere to the UNC Honor Code.

Please use any AI assistant tools such as ChatGPT and Copilot effectively. The use of AI assistants to write code is an increasingly powerful skill, and one that you will likely use to great effect in your career. However, using AI assistants to complete assignments or copy/paste code is a great way to not actually learn from this course. Our textbook readings will make frequent suggestions on how to frame questions to AI assistants. Generally speaking, treat AI assistants like you would a fellow student or an assistant professor - ask questions and explanations of the AI, but don't ask for answers to assignments or for it to generate code. And if using code created by generative AI, cite your sources and be prepared to explain how it functions.

When using any online resources (such as W3Schools, StackOverflow, or Generative AI), please provide links to these resources in comments in your code. As programmers, searching the web for answers is a major part of our workflow. Citing our sources is as well.


Course Schedule

This table lists the course schedule for this semester. Please complete all readings and videos in the "Pre-Read" column before each lecture.

This schedule is tentative and subject to change over the course of the semester as needed.
Date Topic Pre-Read Assigned Due
08/19 (Mon) Course Overview, Introduction To Programming Assignment 01
08/21 (Wed) Working With Python, Environment Setup, Navigating the Textbook
08/26 (Mon) Coding Basics And The Building Blocks Of Code Chapter 1 (Programming as a way of thinking)
Chapter 2 (Variables and Statements)
Assignment 02 Assignment 01
08/28 (Wed) Decision Structures Chapter 5: Conditionals and Recursion
You can omit the section on recursion.
September: Python Basics
09/02 (Mon) Labor Day
09/04 (Wed) Lists and Iteration: Pt. 1 Chapter 9: Lists Assignment 02
09/09 (Mon) Lists and Iteration: Pt. 2 Chapter 7: Iteration and Search
09/11 (Wed) Lab Day: Battleship Assignment 03
09/16 (Mon) Functions Chapter 3: Functions
Chapter 6: Return Values
09/18 (Wed) Dictionaries Chapter 10: Dictionaries Assignment 03
09/23 (Mon) Well-Being Day
09/25 (Wed) Errors and Exceptions Geeks For Geeks: Errors and Exceptions In Python Assignment 04
09/30 (Mon) Working with Files OS Module in Python
File Handling in Python
JSONPython JSON
Working with csv files in Python
October Advanced Python
10/02 (Wed) Check-In Day 1 Milestone 01 Assignment 04
10/07 (Mon) Dates and Times Python datetime module (GFG)
Python datetime (W3S)
Python datetime (Python)
10/09 (Wed) Environments and Packages Python Modules and Packages
Installing Packages Guide
10/14 (Mon) Object Oriented Programming, Pt. 1 Chapter 14: Classes and Functions
Chapter 15: Classes and Methods
Chapter 16: Classes and Objects
Chapter 17: Inheritance
Milestone 01
10/16 (Wed) Object Oriented Programming Pt 2 - Lab Day: Pokemon Assignment 05
10/21 (Mon) Guest Lecture 1: Daniel Brannock
10/23 (Wed) Guest Lecture 2: John McCarthy
10/28 (Mon) Retrieving Web Data What is HTTP?
What is a REST API?
Assignment 05
10/30 (Wed) Lab Day: data.cdc.gov
November Data Analysis and Visualization
11/04 (Mon) Check-In Day 2 Milestone 02
11/06 (Wed) Notebooks for Data Analysis How To Use Juypter Notebooks
Working With Jupyter Notebooks in VSCode
11/11 (Mon) Introduction to Source Control What Is Git?
What Is Git? (Github)
Source Control in VS Code
11/13 (Wed) Dataframes Pandas: What Is It And Why Does It Matter?
10 Minutes To Pandas
Assignment 06
11/18 (Mon) Static Data Visualization MatPlotLib Quickstart Guide
Pandas Plotting Guide
Seaborn Introduction
11/20 (Wed) Data Storytelling and Interactivity Data Storytelling
Mastering Dashboard Design
11/25 (Mon) Data Visualization Lab Day
11/27 (Wed) Thanksgiving Recess Assignment 06
December Final Project
12/02 (Mon) Putting It All Together: Final Project Review Session 01
12/04 (Wed) Putting It All Together: Final Project Review Session 02
12/13 Final Due Date Milestone 02

Campus Services

Accessibility Resources

The University of North Carolina at Chapel Hill facilitates the implementation of reasonable accommodations, including resources and services, for students with disabilities, chronic medical conditions, a temporary disability or pregnancy complications resulting in barriers to fully accessing University courses, programs and activities. Accommodations are determined through the Office of Accessibility Resources and Service (ARS) for individuals with documented qualifying disabilities in accordance with applicable state and federal laws. See the ARS Website for contact information: https://ars.unc.edu or email ars@unc.edu.

Counseling and Psychological Services

CAPS is strongly committed to addressing the mental health needs of a diverse student body through timely access to consultation and connection to clinically appropriate services, whether for short or long-term needs. Go to their website: https://caps.unc.edu/ or visit their facilities on the third floor of the Campus Health Services building for a walk-in evaluation to learn more.

Title IX

Any student who is impacted by discrimination, harassment, interpersonal (relationship) violence, sexual violence, sexual exploitation, or stalking is encouraged to seek resources on campus or in the community. Please contact the Director of Title IX Compliance (Adrienne Allison – Adrienne.allison@unc.edu), Report and Response Coordinators in the Equal Opportunity and Compliance Office (reportandresponse@unc.edu), Counseling and Psychological Services (confidential), or the Gender Violence Services Coordinators (gvsc@unc.edu; confidential) to discuss your specific needs. Additional resources are available at safe.unc.edu.