CS:5110 Introduction to Informatics
MWF: 11:30 pm - 12:20 pm; online
Professor Padmini Srinivasan
email: padmini dash srinivasan at uiowa dot edu
Office Hours (on zoom): M: 3-4:30pm, Fri:1-2:30pm and by appointment
Teaching Assistant: Ingroj Shrestha (firstname.lastname@example.org)
TA's office hours (on zoom): M: 5-6:30pm, Tues: 3:30-5pm
DEO: Professor Alberto Segre
This course is designed for Graduate students from areas other than Computer Science who wish to learn programming using Python. While this is an introductory course it is fast paced. Students are expected to work diligently throughout the semester. Ideally the student will go beyond the assignments and work independenlty on additional coding problems. The key expected outcome is that the student will be comfortable working with Python and be able to think computationally when addressing problems.
Specifically, the course has two goals. (1) Build foundational knowledge about programming concepts and skills with enough practice opportunities so that students develop confidence in programming and the capacity to advance their knowledge base. While Python is the language used, and it is a good language to learn, knowledge gained about the underlying programming concepts should transfer to other languages as well. Besides key data structures and algorithms we will cover object-oriented programming and key principles of effective coding including debugging practices and thinking about computational efficiency. (2) Introduce the student to core informatics methods that can be used to solve a variety of problems. We will look at a number of problems and explore how to design solutions. We will also explore the NLTK toolkit (Natural Language Toolkit). Students will use NLTK to learn how to handle semi-structured, textual, datasets and process them in different ways. Aspects such as text normalization, tagging, named entity recognition will be explored. Where appropriate readings on the underlying technologies will be assigned.
The overall structure of the course is roughly:
• the first two-thirds will be for fundamentals of programming in Python. Here we will cover data structures, some algorithms, learning to design solutions to a variety of problems - several will derive from puzzles.
• the last third will be to explore the NLTK toolkit and methods to analyze large datasets.
• Homeworks: throughout the semester
• Exams (working through details)
• Final Project
For programming assignments, you must submit files containing exectable code to the appropriate ICON dropbox. In general, Python code must be submitted in .py files (not .txt, .rtf, .doc, etc.). If the assignment contains multiple files, put them all in one folder, zip it, and submit the one .zip file to ICON; The name of the zip file should be in the format: Firstname-Lastname-Hwk#. If required more specific guidelines will be provided with the homework assignment.
It is very important that programs be well-written and clear. Programs should be readable by people as well as executable by computers. Coding style and organization will be considered while grading from homework 2 onwards. Your code should include comments where appropriate, but avoid unhelpful (e.g. "this is a variable") or imprecise (e.g. "this loop goes around and around until it figures out the answer") comments. Ambiguous or inaccurate comments can be worse than none at all.
Course software: You should download Python 3.7 or 3.8 from the official python site. The book 'Python Text Processing with NLTK 3 Cookbook is handy for the second part of the course. The accompanying code is available at: Code A second NLTK book may also come in handy. This is by Bird, Klein and Loper, 2009. Natural language processing with python.
* Mark Pilgrim. Dive Into Python 3 (pdf available), 2009
* Tim Hall and J-P Stacy. Python 3 for Absolute Beginners (pdf available), 2009
* Allen Downey. Think Python: how to think like a computer scientist by Allen Downey (pdf available), 2015
* Charles Severance. Python for Everybody: Exploring Data using Python 3. Several free versions of this book are available here.
* Dipanjan Sarkar. Text Analytics with Python. A Practical Real-World Approach to Gaining Actionable Insights from Your Data, 2016. Note 2019 version is now in print.
* Jacob Perkins. Python 3 text processing with NLTK 3 cookbook, 2014.
* Mark Summerfield. Programming in Python 3: a complete introduction to the Python language, 2010.
• "Online Python Tutor" website allows stepping forward (and backward) through Python code and visualizing variable values as they are updated.
• The official Python website.
• Coding Bat - interactive python exercises
Here is a nice history of computing with cool pictures.
Plus/Minus grading will be used. There are two components that will determine your grade. We reserve the right to change the percentages of the components by up to 10% each.
• Homework assignments: 50%. There will be regular homework assignments.
• Exams: 30% There will be at least one (maybe two) in-class exams during the semester (15% each). The second exam will be cumulative. If only omne exam is held then point value will be distributed across perforamnce measurements.
• Final project: 20%.
Lateness/make-up policy For full credit, homework must be submitted on time. Late submissions will be accepted only when these two conditions are met: 1) a first version is submitted by the regular deadline 2) the "late" and presumably improved version is submitted within 24 hours of the original deadline. The score for the homework will be the higher of the first submission score and 75% of the score on the late version. Assignments submitted after 24 hours will not get be graded or get a score. Please note that starting early on homeworks is important.
Except in special circumstances (see the University's policy on "Excused Absences from Examinations"), there will be no make-up exams.
Scores and Grades are available on ICON only.
Academic dishonesty will not be tolerated. Under no circumstances should you pass off someone else's work as your own. This applies to code or other material that you might find on the internet or from an individual. If plagiarism is detected then all students involved (including the one who shares solutions) will receive 0 points for the work. This holds even if the plagiarism is detected at the end of the semester. If a student is involved in a second instance of plagiarism (again including those who share code) then the grade for the course will be a Fail, again this is irrespective of when this plagiarism is detected.
Students may talk to each other about concepts, solution approaches, other ideas related to the coursework and homework. However, it is important to ensure that these discussions do not lead to the exchange of written or electronic material pertaining to the homework. Thus, your submissions need to clearly be your own.
Use of code from the web is also not allowed unless a particular assignment specifies otherwise. Even in cases where it is appropriate to incorporate code from the Internet or other reference source, such inclusion must be properly cited/credited (this is often done by inserting comment lines prior to the borrowed code stating where you got them, providing a URL, etc.)
Please note: We regularly use available software plagiarism detection tools to test originality of homework submissions, and these tools are sophisticated.
See the CLAS Code of Academic Honesty for additional information.
This course is offered within the College of Liberal Arts and Sciences (CLAS).
Additional UI and College of Liberal Arts and Sciences policies relating to this class are given here. This includes information about the administrative home for the course, accommodations for disabilities, complaint procedures, etc. (Note that the complaint policy mentions the DEO. The DEO, or Department Chair, for the Computer Science Department is Professor Alberto Segre).
The University of Iowa / Computer Science, CLAS