IST200: Practical Programming For Information Professionals

Master Syllabus. Derivative syllabi should contain the entire contents of this syllabus.

Course Information

Catalog Description

Due to the prevalence of technology in our lives, learning to program has become the critical skill of the 21st century. Students will learn practical applications of computer programming such as how to automate tasks, manipulate data and solve problems applicable to almost any academic discipline.

Learning Outcomes

At the end of the course, students will be able to:

  1. Analyze complex problems by thinking computationally and systematically.
  2. Solve practical, real-world problems using a modern computer programming language.
  3. Demonstrate the ability to read, write, discuss and code confidently.
  4. Understand how to code in teams, collaborate with others and manage source code.
  5. Acquire new programming knowledge independently.

Prerequisite

None.

Target Audience

This course is for students who are new to programming yet desire to learn how programming applies to our everyday lives.

Course Description

We live in a connected world with constant information at our disposal. Phones, tablets, and gaming consoles… Instagram, Twitter, Facebook and Google – what do they all have in common? Code. Learning to code is the critical skill of the 21st century, and every career from astronomers to zookeepers can benefit from programming knowledge. Yes, everyone should learn to code, yet not everyone needs to become a software developer. Programming teaches you how to think, how to become an independent learner and most importantly how make computers do work for you. Would you like to receive a TXT when a file download completes? Plot the locations of your Instagram followers on a map? Use weather information to suggest if you should pack an umbrella? If so, you should learn to code!

This course is for students new to programming. We will code in Python - an easy to learn yet powerful computer programming language. We will take an applied approach to programming, focusing on how to accomplish tasks and solve real-world problems as opposed to general computing theory. The course will cover programming fundamentals via relatable examples and quickly moves on to practical and interesting applications of computing.

You will learn:

Specifically we will learn to program computers to do the following:

Textbooks

The following text is required. You want the Python 3 version of the book, which is available online for free:

Here are some other free online textbook / resource recommendations:

Technology Requirements

This course uses the BYOD (Bring Your Own Device) model. The expectations are that you own a notebook computer and you will bring it to every class fully charged.

To avoid the complexities of installing Python 3, the requisite dependencies, and other software we provide you with a virtual machine called the Data Science Appliance. It has everything you need to be successful in the course. To run the data science appliance you need 4 GB of RAM and 40 GB of free disk space. You will also need to download and install Oracle VM VirtualBox 5.0 or higher https://www.virtualbox.org/wiki/Downloads. The data science appliance can be downloaded from http://classes.ischool.syr.edu/ist200/appliance/.

Methods of Evaluation

This course uses a well thought out mix of individual, group, in-class and out-of-class instruments to assess your knowledge acquisition. A variety of techniques are used to cater to students of different learning styles and assess the course learning outcomes.

Assessment
Name
Learning
Outcomes
Quantity Points
Each
Points
Total
Exams 2,3 3 (lowest score dropped) 25 50
Problem Sets 2,3,4 4 5 20
Project 1,2,3,4,5 1 20 20
Effort 2,3 1 10 10
TOTAL 100

Grading Scale

We use the following grading scale for translating your points earned into a letter grade to be submitted to the University registrar.

Student Achievement Total Points Earned Registrar Grade
Mastery 95 - 100 A
90 - 94 A-
Satisfactory 85 - 89 B+
80 - 84 B
75 - 79 B-
Low Passing 70 - 74 C+
65 - 69 C
60 - 64 C-
Unsatisfactory 50 - 59 D
0 - 49 F

Exams

Exams evaluate your recall and understanding of the course material, as well as your ability to apply it to new situations. There will be three exams in the course. Your best two exam scores count towards your final grade, offering you an opportunity to achieve mastery over the material. Due to the nature of the subject matter, examinations are naturally cumulative. Exams are delivered in class on the scheduled dates posted on the class schedule. It is your responsibility to be present for each exam on the date posted. There are no re-issues or make-ups, as this is logistically difficult to accomplish fairly.

Problem Sets

Problem sets assess your ability to code in teams, collaborate with others, analyze structured computational problems and solve real-world problems by writing code. Problem sets are a group effort and you will be paired with 2 or 3 other classmates and tasked with working through a set of instructor-defined problems outside of class time. There will be 4 assigned problem sets throughout the semester, each worth 5 points and graded by an evaluator based on the following criteria:

  1. Completeness The code is complete. All required code is written. It might work, it might not, but the effort was there and you have proven to the evaluator that an honest effort was made.
  2. Correctness The code works as expected, executes according to the intended design. No further explanation required.
  3. Collaboration It is obvious to the evaluator that this was a collaborative effort. Each classmate contributed to the code, and other deliverables reflected in the end product.
  4. Code Design The code is well written. It should be easy for the evaluator for read and comprehend your code. Intent should be clear and functions, modules and variables should be aptly named.
  5. Code Reflection For each problem in the problem set, your team must provide a code reflection. This is a narrative of the programming experience. You should always include the following: Your approach or plan for solving the problem. What worked? What didn’t? Where did you get stuck? How did you overcome it? Does the program work? Why or why not? The reflection is your opportunity to explain your end product to the evaluator.

In every case, the responsibility to provide evidence to the evaluator that your team has met the criteria is on the student team. If it is not obvious, credit will not be awarded.

Project

The final project is your chance to showcase your ability to analyze complex problems, implement the solution in code and demonstrate your knowledge acquisition skills. You will be expected to create a working and useful computer program that includes new knowledge you acquired beyond the scope of the course. You may work alone on the final project, or team up with a partner. The only criteria for this program is that it must be of your own design and serve a useful purpose.

Each student or student pair will draft their plan, build their program and then demonstrate it on demo day. During demo day, faculty, staff, classmates, alumni and employers will be invited to experience your creations. You / your team is expected to deliver a live demonstration of your programming project on demo day.
  Specifically, the project deliverables on demo day are:

  1. Project Plan Poster: The poster not only serves as project documentation but designed to attract an audience to your work during demo day. It should be an actual is a 2x3 poster which explains your program, what it does, how it works and what useful purpose it serves. You should outline the steps your program takes to accomplish the task, and include visuals as appropriate (flowchart, process diagram, etc.).
  2. Working Program: You should have a working version of your program so demo day visitors can execute and interact with it. Visitors should be able to execute your program with limited instructions and assistance from you.
  3. Presentation: On demo day, you should setup your program and poster and get ready to show off your creation to visitors. You should be able to explain your program conceptually (big picture) and logically (what it is doing, step by step) to your visitors. You should be able to field questions from your audience and most importantly permit users to execute your program!

And the following submitted to the evaluator electronically:

  1. Digital version of project plan poster.
  2. Full Source code for your working program along with any specific instructions for how the program must be run by the evaluator.
  3. Code Reflection. Similar to the code reflections of the problem sets.

Your project is graded out of 20 points based on the following criteria. Each of these criteria are worth 2 points, with 0 points meaning “no / not at all”, 1 point meaning “somewhat / sometimes” and 2 points meaning “definitely / always.”

  1. Usefulness of Idea Does your program idea have a useful purpose? A good test for this rubric is would someone find an actual use for your program?
  2. Scope / Ambition How ambitious is your idea? Ambition addresses the novelty and vision of your idea. Ambitious projects are novel and have many features and/or inherent complexity.
  3. Polish of End Product Does it appear to be a well put together, finished product? Is there consistent branding? Does it execute easily and can be understood by the audience?
  4. Project Poster Does your poster explain what your program is about including how it works? Does it include visuals as instructed?
  5. Presentation How well can you explain your project to the audience? Can you explain it conceptually and logically (what it is doing in code, how it was engineered)?
  6. Demo Are we able to easily demo your code independently, with limited instructions?
  7. Knowledge Acquisition Does your program use some facet of programming you learned independently, outside the scope of provided course topics; have you clearly articulated it?
  8. Code Correctness Does the program function as designed? Does it work as intended?
  9. Collaboration And Documentation It is obvious this was a collaborative effort (if working with a partner)? Can the evaluator determine you worked on your project over time? Did you include your completed code reflection?
  10. Code Design Is the code well written? Identifiers aptly named? Is the code easy to understand?

Effort

The effort instrument measures attendance, participation, and whether you’re keeping pace with studies as expected. Each student begins the course with 10 effort points. You lose an effort point whenever:

I am not obligated to provide advance notice of effort measurements, and you should assume effort is measured in every class. Sometimes I might notify the class in advance of an effort event. For example I could announce in class when I assign homework that I will check it next class for effort, or that there will be a pop-quiz next week. Some days there may be more than one effort check. For example, I might take attendance and assign a pop-quiz.

Course Policies

Other Course Policies:

Course Honor Code

The course honor code represents our commitment to Academic Integrity in a programming course. I drafted the class honor code to avoid academic negligence - situations where students are unaware that their actions are actually a form of cheating. Our honor code remedies this problem by clearly stating the expectations of Academic Integrity for this course. It states:

  1. All work is my own. Answers on all student work, assignments (problem sets, projects, papers, homework, etc…) and assessments (quizzes, exams, tests, etc…) are my own individual work (except where collaboration is explicitly permitted). In the case where collaboration is permitted I will only collaborate within my team.
  2. I will not share answers. I will not make answers (either my own or the professor’s) to work, assignments (problem sets, projects, papers, homework, etc…) and assessments (quizzes, exams, tests, etc…) available to anyone else in or out of class. This includes posting them on the web or sharing them in test banks.
  3. I will not misrepresent my ability. I will not engage in any activity which misrepresents or falsifies my knowledge of the subject matter and therefore improves my grade dishonestly.
  4. I will give credit. I will always pay attribution to my sources, and not misrepresent the works of others as my own.
  5. I accept the honor code and its consequences. I understand and accept that that all work I submit is subject to the honor code, and if I violate this honor code I will be brought up on charges of academic fraud. For undergraduate students academic fraud will result in an grade of F with a marker on your transcript indicating you violated academic integrity. For graduate students the penalty is suspension or expulsion.

Course Schedule

Here’s our schedule of topics to be covered each day throughout the semester. It is expected you will come to class having prepared for the day’s topic. All deliverable and examination dates are posted to this schedule.

Week Day Topic Complete
Before Class
Complete
After Class
Due
1 1 Course Introduction Review Syllabus
Why Code?
Setup Data Science Appliance
1 2 Command Line / Git
2 1 Python Introduction
2 2 Variables, Types, Expressions, Statements
3 1 Conditionals, Exceptions
3 2 Functions Problem Set 1
4 1 Iteration, for, while
4 2 Strings
5 1 Exam 1 Exam 1
5 2 Files, Text Encoding
6 1 Lists, Tuples
6 2 Dictionaries
7 1 Comprehensions, Lambdas
7 2 Regular Expressions Problem Set 2
8 1 Modules
8 2 HTTP, Web Services
9 1 API Consumption
9 2 Exam 2 Exam 2
10 1 Pandas
10 2 Charts, Matplotlib
11 1 HTML
11 2 Screen Scraping Problem Set 3
12 1 HTML Forms
12 2 Web Servers
13 1 Databases
13 2 Task Automation
14 1 TBA Problem Set 4
14 2 Exam 3 Exam 3
N/A 1 Demo Day!
(Final Exam Block)
Project