CSCI 127: The Joy & Beauty of Data

Catalog description: Provides a gentle introduction to the exciting world of big data and data science. Students expand their ability to solve problems with Python by learning to deploy lists, files, dictionaries and object-oriented programming. Data science libraries are introduced that enable data to be manipulated and displayed.

Course schedule

The course runs May 18 through June 26, with assignments due at 5pm on most weekdays. We will have no official course meeting time and all materials will be available online for you to complete anytime before their due date. One of the course assistants or I will be available for two hours per day for office hours to help you work through any issues you may have. I’ll ask for your availability in the first assignment and set the daily office hours based on times that work best for the most people.

Course resources


We will use a free, online textbook for this course. You will need to sign up for an account here. Enter csci127summer2020 for the course name. Watch the video here for help creating an account, navigating the textbook, and completing the assignments, and the video here for some additional information on assignments. To get full credit for reading assignments, simply complete the assigned number of activities inside the book before the deadline.

Course assistants

We are lucky to have two excellent course assistants who will be helping hold office hours and grade assignments: Gerard Shu Fungwi and Andrew Johnson. You can contact them via Slack.

Office hours

Gerard, Andrew, and I will hold daily office hours on Slack to answer any questions you have. Post in the #officehours channel with a question and we can chat about it in a thread. If needed, we can start a video call so you can share your screen. If you have anything that you need to ask privately, you can send me a direct message on Slack.

Additional problems

You can find some additional Python problems to work on here. These will be particularly useful for preparing for the quizzes.


SmartyCats, MSU’s on-campus tutoring center, is offering tutoring services over video, text, voice call, and email during the summer session. The tutor for our course is Arnold Smithson, who tutored for us last year. A number of students worked with him last year and found it very helpful! To book a session with him, go to the SmartyCats website, click “Find a SmartyCats Tutor”, and log in with your netid. Then select our course (CSCI 127) and choose a time. It costs $2 per hour for groups of 1-4 students.

Slack workspace

We’ll be using Slack for all course communication (except about grades or other sensitive information). It is very important that you join the Slack workspace and check it every day of the course to keep up with announcements and to get help when you need it. There are plenty of videos online that can help you use Slack; most importantly, you should customize your notification settings!

Visualizing your code

You can paste your Python code into the tool here and see what executes with every step.

Checking your work

You can compare the output of your program with a sample output using a tool like Just copy the sample output on one side and your program’s output on the other. After you press the Find Differences button, you will see any differences between the text on the left and the text on the right. You should aim to get your program’s output to be identical to the sample output.

Installing Python

In order to work on labs and programming assignments on your personal computer, you will need to install Python and install a few packages. I made videos to help with installation for both Mac and Windows. You can find them here.


Download the macOS 64-bit installer at the bottom of this page and install. Then, to install packages, open a terminal window and run each of the following:

pip3 install --user numpy
pip3 install --user matplotlib
pip3 install --user pandas
pip3 install --user scikit-learn


Download the Windows x86-64 executable installer file at the bottom of this page and install. When installing, be sure to check the box to add Python to the PATH. Then, to install packages, open a terminal window and run each of the following:

python -m pip install numpy
python -m pip install matplotlib
python -m pip install pandas
python -m pip install scikit-learn

Course outcomes

By the end of this course, students should be be able to:

  • Utilize lists, files, dictionaries and arrays to solve problems in Python.
  • Utilize fundamental object oriented principles such as classes, objects, methods and inheritance to solve problems in Python.
  • Utilize data science libraries to solve data science problems in Python.
  • Understand the broad area of data science and its relevance.


  • Quiz 1: 10%
  • Quiz 2: 10%
  • Quiz 3: 10%
  • Labs: 25% (all weighted equally)
  • Completion of interactive textbook assignments: 15% (all weighted equally)
  • Programming homework assignments: 30% (all weighted equally)

After any curving, your grade will be determined by your total score as follows: 93+: A; 90+: A-; 87+: B+; 83+: B; 80+: B-; 77+: C+; 73+: C; 70+: C-; 67+: D+; 63: D; 60: D-.

Collaboration policy

On labs, programming homework assignments, and interactive textbook questions, you may:

  • Share ideas with other individuals or groups.
  • Help other individuals or groups troubleshoot problems.

You may not:

  • Share code you or your partner has written with other individuals or groups.
  • Submit code that you or your partner did not write.
  • Modify another group’s or individual’s solution and claim it as your own. Failure to abide by these rules will result in an F for the course and being reported to the Dean of Students.

Diversity statement

Montana State University’s campuses are committed to providing an environment that emphasizes the dignity and worth of every member of its community and that is free from harassment and discrimination based upon race, color, religion, national origin, creed, service in the uniformed services (as defined in state and federal law), veteran’s status, sex, age, political ideas, marital or family status, pregnancy, physical or mental disability, genetic information, gender identity, gender expression, or sexual orientation. Such an environment is necessary to a healthy learning, working, and living atmosphere because discrimination and harassment undermine human dignity and the positive connection among all people at our University. Acts of discrimination, harassment, sexual misconduct, dating violence, domestic violence, stalking, and retaliation will be addressed consistent with this policy.


If you have a documented disability for which you are or may be requesting an accommodation(s), please contact me and the Office of Disability Services as soon as possible.

How to succeed in this class

What you can do:

  • Keep up with the course by checking Slack, being aware of the course schedule, and doing all assignments on time.
  • Be an active participant in class. This means asking and answering questions using Slack, attending office hours to get one-on-one help when needed, and contacting me via Slack if you have any questions outside of office hours.
  • Be respectful of both your classmates and me.
  • Do your own work.

What I can do:

  • Grade and return labs and programming assignments before the following day’s office hours.
  • Be available every week day during that day’s office hours for video meetings or to answer questions via chat on Slack.
  • Respond to all Slack messages within one business day.
  • Create a course atmosphere conducive to learning by respecting all of my students and being enthusiastic about course material and my role in helping you learn.

Course schedule

DateReading Assignment DueProgramming Assignment DueOptional VideosOffice Hours (in Mountain Time)
Monday 5/18General IntroductionLab 0Using the IDLE shell, Completing reading assignments 1 210am-12pm
Tuesday 5/19Simple Python Data, Turtle Graphics, Iteration A first turtle program3pm-5pm
Wednesday 5/20FunctionsLab 1Unit testing on your computer, The accumulator pattern, Lab 1 intro8am-10am
Thursday 5/21Selection Activity: is an uno hand playable?10am-12pm and 7pm-9pm
Friday 5/22Iteration RevisitedLab 2Visualizing newtonSqrt in Python Tutor, Activity: guessing game, Lab 2 intro2pm-4pm
Memorial Day!   2-4pm and 7-9pm
Tuesday 5/26 Program 1Program 1 intro, Formatting strings3pm-5pm
Wednesday 5/27Modules, Strings Modules and strings activity8am-10am
Thursday 5/28RecursionLab 3Lab 3 intro10am-12pm and 7pm-9pm
Friday 5/29ListsLab 4Lab 4 intro2pm-4pm
Monday 6/1 Program 2Program 2 intro2-4pm and 7-9pm
Tuesday 6/2   3pm-5pm
Wednesday 6/3 Quiz 1Practice quiz coding problem8am-10am
Thursday 6/4FilesLab 5Lab 5 intro10am-12pm and 7pm-9pm
Friday 6/5DictionariesLab 6Lab 6 intro, Dictionaries activity2pm-4pm
Monday 6/8   2-4pm and 7-9pm8-10pm
Tuesday 6/9 Program 3Program 3 intro3-5pm
Wednesday 6/10Objected Oriented Programming BasicsLab 7Lab 7 intro, Pokemon activity, 2019 Object Oriented Programming Basics video8-10am
Thursday 6/11Object Oriented Programming Card activity10am-12pm and 7-9pm
Friday 6/12InheritanceLab 8Lab 8 intro2-4pm
Monday 6/15 Program 4Program 4 intro2-4pm and 7-9pm
Tuesday 6/16   3-5pm
Wednesday 6/17 Quiz 2Practice quiz coding problem8-10am
Thursday 6/18Numpy Arrays and Python NotebooksLab 9Python notebooks intro, Numpy arrays intro, Installing Numpy, Lab 9 intro10am-12pm and 7-9pm
Friday 6/19matplotlibLab 10A first plot, Activity 1, Subplots, Histograms, Activity 3, Lab 10 intro2-4pm
Monday 6/22Pandas 1 Intro to Pandas, Bridger snowfall activity2-4pm and 7-9pm
Tuesday 6/23Pandas 2Lab 11Sorting and aggregating in Pandas, Planets activity, Lab 11 intro3-5pm
Wednesday 6/24Optional material: scikit-learnLab 12 (course evaluation) 8-10am
Thursday 6/25 Program 5Program 5 intro10am-12pm and 7-9pm
Friday 6/26 Quiz 3Practice quiz coding problem2-4pm