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.
At the end of the course, you will:
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% |
Note: The dates in this section are tentative and are subject to change. Any changes will be announced as early as possible.
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 19 | August 26 |
Assignment 2 | August 31 | September 7 |
Assignment 3 | September 7 | September 14 |
Assignment 4 | September 14 | September 23 |
Assignment 5 | September 23 | October 7 |
Assignment 6 | October 19 | November 4 |
Assignment 7 | November 4 | November 18 |
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.
Please avoid late submissions, i.e., submissions made after the deadline. Depending on the circumstances, late submissions will be penalized by points being deducted. If you feel that you will be unable to meet a deadline, contact me prior to the deadline.
The take-home final exam date will be distributed on November 29, 2021 and will be due 4:00 PM December 4, 2021.
Participation will be graded according to these criteria:
Engagement will be weighted more heavily than attendance and deportment.
We will follow the “Python for Everybody” text book for this course. A copy of the book will be made available in the Resources section in Sakai. You can also buy printed copies (if you prefer printed books) or a version for your e-book reader by following the links from the book’s website.
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.
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.
Note: This is a tentative schedule and is subject to change. Any changes will be announced as early as possible.
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 |
---|---|---|---|
Thursday, August 19 | Introductions | ||
Tuesday, August 24 | 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 |
Thursday, August 26 | Variables, expressions, and statements | Read chapter 2 of P4E | Attempt exercises 2, 3, 4 from P4E chapter 2 |
Tuesday, August 31 | Conditionals | Read chapter 3 of P4E (sections 3.1-3.6) | Attempt exercises 1, 2 from P4E chapter 3 |
Thursday, September 02 | Functions (part 1) | Read chapter 4 of P4E (sections 4.1-4.8) | Attempt exercises 1, 2, 3 from P4E chapter 4 |
Tuesday, September 07 | Functions (part 2) | Read chapter 4 of P4E (sections 4.9-4.12) | Attempt exercises 4, 5 from P4E chapter 4 |
Thursday, September 09 | 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 14 | Iteration (part 2) | Read chapter 5 of P4E (sections 5.5-5.7) | Attempt exercise 2 from P4E chapter 5 |
Thursday, September 16 | Abstraction and decomposition | Read Abstraction and How to Solve it on Wikipedia | |
Tuesday, September 21 | Strings | Read chapter 6 of P4E | Attempt exercise 6 from P4E chapter 6 |
Thursday, September 23 | Files | Read chapter 7 of P4E | Attempt exercise 1 from P4E chapter 7 |
Tuesday, September 28 | Lists (part 1) | Read chapter 8 (sections 8.1-8.7) of P4E | |
Thursday, September 30 | Lists (part 2) | Read chapter 8 (sections 8.8-8.14) of P4E | Attempt exercise 1 from P4E chapter 8 |
Tuesday, October 05 | Dictionaries (part 1) | Read chapter 9 (sections 9.1-9.2) of P4E | Attempt exercise 1 from P4E chapter 9 |
Thursday, October 07 | Dictionaries (part 2) | Read chapter 9 (sections 9.3-9.5) of P4E | Attempt exercise 2 from P4E chapter 9 |
Tuesday, October 12 | Class cancelled | ||
Thursday, October 14 | Tuples and sets | Read chapter 10 of P4E | Attempt exercises 1, 2 from P4E chapter 10 |
Tuesday, October 19 | Review 1 | Come prepared with questions | |
Thursday, October 21 | No class: Fall break | ||
Tuesday, October 26 | Regular expressions | Read chapter 11 of P4E | Attempt exercise 1 from P4E chapter 11 |
Thursday, October 28 | Networked programming | Read chapter 12 of P4E | Attempt exercises 1, 2 from P4E chapter 12 |
Tuesday, November 02 | Objected-oriented programming | Read chapter 14 (sections 14.1-14.5) of P4E | |
Thursday, November 04 | Classes and instances (part 1) | Read chapter 14 (sections 14.6-14.9) of P4E | |
Tuesday, November 09 | Classes and instances (part 2) | Read chapter 14 (sections 14.10) of P4E | |
Thursday, November 11 | Visualization | Read chapter 16 of P4E | |
Tuesday, November 16 | Recursion | Read https://realpython.com/python-thinking-recursively/ | |
Thursday, November 18 | Version control | Read https://librarycarpentry.org/lc-git/01-what-is-git/index.html and https://librarycarpentry.org/lc-git/02-getting-started/index.html | |
Tuesday, November 23 | Unit testing | Read https://jeffknupp.com/blog/2013/12/09/improve-your-python-understanding-unit-testing/ | |
Thursday, November 25 | No class: Thanksgiving | ||
Tuesday, November 30 | Review and reflections |
This fall semester, while we are in the midst of a global pandemic, all enrolled students are required to wear a mask covering your mouth and nose at all times in our classroom. This requirement is to protect our educational community–your classmates and me–as we learn together. If you choose not to wear a mask, or wear it improperly, I will ask you to leave immediately, and I will submit a report to the Office of Student Conduct. At that point you will be disenrolled from this course for the protection of our educational community. Students who have an authorized accommodation from Accessibility Resources and Service have an exception. For additional information, see https://carolinatogether.unc.edu/community-standards/#chapter-2.
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.
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.
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.
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 https://safe.unc.edu.
This syllabus includes elements of INLS 560 sections taught by Professor David Gotz and INLS 201 taught by Professor Melanie Feinberg.