Course information

Date and time
Tuesdays and Thursdays, 3:00PM-4:15PM
Location
Zoom (Online, synchronous)

Zoom meeting information will be shared directly with students through Sakai.

Instructor information

Instructor
Sayamindu Dasgupta
Email
Office hours
By appointment

Overview

This course provides an introduction to computer programming focusing on language fundamentals and programming techniques for library and information science applications. Course content emphasizes problem-solving through the development of practical applications.

This course is taught with a focus on the Python programming language. However, the core concepts are relevant to most modern programming languages such as Java, JavaScript, and C++.

Please note that this course is designed for students with no prior programming experience. If you already know how to program, this is not the course for you.

Objectives

At the end of the course, you will:

Grading

Your final class grade will be based on the following elements (each element is described in detail in the next section):

Final grades for undergraduate students will be assigned according to the following schedule:

A 95% and above
A- 90%-95%
B+ 87%-90%
B 85%-87%
B- 80%-85%
C+ 77%-80%
C 75%-77%
C- 70%-75%
D+ 67%-70%
D 65%-67%
D- 60%-65%
F Less than 60%

Final grades for graduate students will be assigned according to the following schedule:

H 95% and above
P 80%-95%
L 60%-80%
F Less than 60%

Assessment

Micro-assignments

You will be asked to complete micro-assignments almost every week. These assignments are intended to ensure that you have a basic conceptual understanding of the topics being covered in class. Each micro-assignment is worth 5 points. If you are unable to complete a micro-assignment correctly, you can set up a time to meet with me, where I will help you understand the topic and complete the micro-assignment. Once you are successful, you will get those 5 points.

Details on micro-assignments will be shared on Sakai.

Take-home assignments

In addition to micro-assignments, there will be seven take-home assignments that are designed to evaluate whether you can apply the concepts taught in class toward solving problems. Each assignment will be distributed on Sakai on the date indicated below.

Assignment Date distributed Date due
Assignment 1 August 11 August 18
Assignment 2 August 20 August 27
Assignment 3 September 1 September 8
Assignment 4 September 8 September 22
Assignment 5 September 22 October 6
Assignment 6 October 15 October 29
Assignment 7 October 29 November 10

You should create a new PyCharm project for each assignment. This can be done by clicking the “Create New Project” button on the window that appears when first launching the PyCharm application. Your project must be named according to the following convention: assignment<n>_<onyen>, where <onyen> is replaced with your onyen and <n> is replaced with the assignment number. For example, my onyen is “sdg1”. Therefore, I would name my project for Assignment 3 as follows: assignment3_sdg1. The main code file inside the directory should be named assignment<n>_<onyen>.py.

For each programming assignment, your submission will consist of a zip folder containing your source code for your solution. You are to submit your zip file via the Assignments section of Sakai. I will share a document in the Sakai resource section that shows how to create the zip file.

Late work

Late exams are penalized 5 points for each day that the assignment is late. A day begins when the assignment is due and continues until 24 hours have passed.

Final exam

The take-home final exam date will be announced later, when UNC’s exam schedule for this semester is released.

Participation

Participation will be graded according to these criteria:

Midterm
There will be one ungraded, take home midterm exam that will be distributed on October 6 and due on October 13. Completing the exam is worth 10% of your class participation grade, regardless of how accurately you answer the questions.
Attendance
It is important for you to attend class. If personal difficulties (serious illness, etc) make attendance problematic, please consult with me so that we can make an appropriate plan.
Deportment
You should be attentive in class and respectful of your classmates and the instructor. Turn off cell phones and other devices that might disrupt class. Use laptops and other devices to support current course activities only.
Engagement
Engagement includes: reading the assigned materials before class; asking questions when you do not understand the readings; making observations about the readings, being able to summarize their main points, and being able to respond to questions about the readings; participating in class activities; responding to discussion questions or other questions that I might ask during a lecture; actively listening and taking notes. I welcome productive disagreement (especially with me!), as long as it is expressed constructively and courteously. I value all informed opinions and encourage you to share them.

Engagement will be weighted more heavily than attendance and deportment.

Course technology

Zoom

We will be using Zoom to run the class. Each Zoom session will be recorded and uploaded to Sakai. All UNC students are eligible for a Zoom account through UNC—to install and sign up for Zoom, go to https://software.sites.unc.edu/zoom/.

The Zoom meeting URL and meeting ID is shared in Sakai in the resources section in a PDF file named zoom.pdf.

Sakai

Sakai will be used for assignments, midterms, and resources. A copy of this syllabus, as well as the textbook will be made available in the resources section of Sakai.

Python and PyCharm

The officially supported IDE for this course will be PyCharm Community Edition 5, from JetBrains software. It is available for free from this website: https://www.jetbrains.com/pycharm/download/.

Before using PyCharm, however, you’ll need to have the Python interpreter installed. This can be downloaded for free from the official Python website: https://www.python.org/downloads/. Complicating things slightly is the fact that there are two major branches of Python language: version 3.x and version 2.x. For our class, we’ll use the Python 3.x branch. Therefore, please download the latest version of Python 3.x and install it on your computer.

PyCharm and Python should both be installed on the computers in the SILS computer lab. In addition, PyCharm should be available via the ITS Virtual Lab under the SILS collection of software. However, it is strongly recommended that you install both Python and PyCharm on your personal laptop. This will allow you to actively participate in class exercises (a key component of your learning experience, not to mention your class participation grade). It will also allow you to complete you homework assignments without being tied to the computer lab and/or internet.

Calendar

Note: This is a tentative schedule and is subject to change. Any changes will be announced in class and by email.

Most readings are from the Python for Everybody textbook, which you can download from https://www.py4e.com/book and from the resources section in Sakai. In the calendar and elsewhere in this syllabus, the book may be referred to as P4E. We’ll start with a high-level discussion of how computers work, then begin digging into a range of programming concepts. Most classes will combine lecture-style instruction with hands-on class exercises when you’ll “learn by doing”.

For each day of the course, read the listed materials before class. In addition, try to complete the exercises that are indicated (if any). While ungraded, this preparation is essential for your success in this course. It will provide you with a foundation that we will build upon in class through both lectures and hands-on exercises, both of which are designed with the assumption that you will have completed the assigned preparation tasks. In addition, it will help you gain the knowledge and skills you need to complete your programming assignments. Finally, the material covered in these pre-class assignments will be potential topics for exam questions.

Date

Topic

Read before class

Exercise

Tuesday, August 11

Introductions

Thursday, August 13

Fundamental ideas

Read chapter 1 of P4E and watch video at https://www.youtube.com/watch?v=p3q5zWCw8J4

Attempt exercises 1, 4, 6, 9 from P4E chapter 1

Tuesday, August 18

Variables, expressions, and statements

Read chapter 2 of P4E

Attempt exercises 2, 3, 4 from P4E chapter 2

Thursday, August 20

Conditionals

Read chapter 3 of P4E (sections 3.1-3.6)

Attempt exercises 1, 2 from P4E chapter 3

Tuesday, August 25

Class cancelled

Thursday, August 27

Functions (part 1)

Read chapter 4 of P4E (sections 4.1-4.8)

Attempt exercises 1, 2, 3 from P4E chapter 4

Tuesday, September 01

Functions (part 2)

Read chapter 4 of P4E (sections 4.9-4.12)

Attempt exercises 4, 5 from P4E chapter 4

Thursday, September 03

Iteration (part 1)

Read chapter 5 of P4E (sections 5.1-5.4) and chapter 3 (section 3.7)

Attempt exercise 1 from P4E chapter

Tuesday, September 08

Iteration (part 2)

Read chapter 5 of P4E (sections 5.5-5.7)

Attempt exercise 2 from P4E chapter 5

Thursday, September 10

Abstraction and decomposition

Read Abstraction and How to Solve it on Wikipedia

Tuesday, September 15

Review 1

Come prepared with questions

Thursday, September 17

Strings

Read chapter 6 of P4E

Attempt exercise 6 from P4E chapter 6

Tuesday, September 22

Files

Read chapter 7 of P4E

Attempt exercise 1 from P4E chapter 7

Thursday, September 24

Lists (part 1)

Read chapter 8 (sections 8.1-8.7) of P4E

Tuesday, September 29

Lists (part 2)

Read chapter 8 (sections 8.8-8.14) of P4E

Attempt exercise 1 from P4E chapter 8

Thursday, October 01

Dictionaries (part 1)

Read chapter 9 (sections 9.1-9.2) of P4E

Attempt exercise 1 from P4E chapter 9

Tuesday, October 06

Dictionaries (part 2)

Read chapter 9 (sections 9.3-9.5) of P4E

Attempt exercise 2 from P4E chapter 9

Thursday, October 08

Tuples and sets

Read chapter 10 of P4E

Attempt exercises 1, 2 from P4E chapter 10

Tuesday, October 13

Review 2

Come prepared with questions

Thursday, October 15

Regular expressions

Read chapter 11 of P4E

Attempt exercise 1 from P4E chapter 11

Tuesday, October 20

Networked programming

Read chapter 12 of P4E

Attempt exercises 1, 2 from P4E chapter 12

Thursday, October 22

Objected-oriented programming

Read chapter 14 (sections 14.1-14.5) of P4E

Tuesday, October 27

Classes and instances (part 1)

Read chapter 14 (sections 14.6-14.9) of P4E

Thursday, October 29

Classes and instances (part 2)

Read chapter 14 (sections 14.10) of P4E

Tuesday, November 03

Visualization

Read chapter 16 of P4E

Thursday, November 05

Recursion

Read https://realpython.com/python-thinking-recursively/

Tuesday, November 10

Version control

Read https://www.cs.umd.edu/class/summer2017/cmsc216/content/resources/gitTutorial.html

Thursday, November 12

Unit testing

Read https://jeffknupp.com/blog/2013/12/09/improve-your-python-understanding-unit-testing/

Tuesday, November 17

Review and reflections

Policies

Instructor communication

For specific, concrete questions, e-mail is the most reliable means of contact for me. You should receive a response within a day or so, but sometimes it may take 2-3 days. If you do not receive a response after a few days, please follow up. Please keep this in mind when you are scheduling your own activities, especially those related to activities with due dates. If you wait until the day before a due date to ask me a clarification question, there is a good chance that you will not receive a response in time.

It is always helpful if your e-mail includes a targeted subject line that begins with “INLS 560.” Please use complete sentences and professional language in your e-mail.

For more complicated questions or help, make an appointment to talk with me.

You are welcome to call me (Sayamindu) by my first name (“Sayamindu” – pronounced “Shayomindoo”). However, you may also use “Dr. Dasgupta” or “Professor Dasgupta” if that is more comfortable for you. Any one of those is fine.

Academic integrity

The UNC Honor Code states that:

It shall be the responsibility of every student enrolled at the University of North Carolina to support the principles of academic integrity and to refrain from all forms of academic dishonesty…

This includes prohibitions against the following:

All scholarship builds on previous work, and all scholarship is a form of collaboration, even when working independently. Incorporating the work of others, and collaborating with colleagues, is welcomed in academic work. However, the honor code clarifies that you must always acknowledge when you make use of the ideas, words, or assistance of others in your work. This is typically accomplished through practices of reference, quotation, and citation.

If you are not certain what constitutes proper procedures for acknowledging the work of others, please ask the course staff for assistance. It is your responsibility to ensure that the honor code is appropriately followed. The UNC Office of Student Conduct provides a variety of honor code resources.

The UNC Libraries has online tutorials on citation practices and plagiarism that you might find helpful.

Students with disabilities

Students with disabilities should request accommodations from the UNC office of Accessibility Resources and Service.

Acknowledgement

This syllabus includes elements of INLS 560 sections taught by Professor David Gotz and INLS 201 taught by Professor Melanie Feinberg.