Welcome to MCS 275. As your instructor, my main goals are to
It is essential that you read this course syllabus because it explains the course policies.
The official course catalog description of MCS 275 is:
Theory, techniques, and tools of the Python programming language, with applications to data structures, algorithms, web programming, and selected topics.
Here is a decsription tailored to this semester's MCS 275:
This course is a second semester of study in introductory computer science, designed for students who have completed CS 107, CS 109, CS 111, or MCS 260. Students will gain experience designing, writing, and debugging more complex programs than are seen in the prerequisite courses. Some important examples of data structures and algorithms will also be presented, both in theoretical terms and by implementing them in Python. Students will also learn to manage files in the terminal and to use some terminal-based software development tools.
Grade of C or better in MATH 180 and grade of C or better in MCS 260; or grade of C or better in CS 107 or CS 109 or CS 111; or equivalent.
If you lack the prerequisites for MCS 275 but have still registered for the course, your registration may be canceled at some point. The instructor is not directly involved in this process. If you think you may lack the prerequisites please speak to an academic advisor in LAS or in the Department of Mathematics, Statistics, and Computer Science.
Feel free to skip this section if you just want to know the rules and expectations. The university requires this section to be present.
Fundamental competencies, capacities, and skills students will gain in this course:
These learning objectives are central to the purpose of the course, and the course assessments are designed to measure progress toward them:
Students need access to a computer that has Python (version 3.10 or higher) and a code editor installed. The officially supported code editor is Microsoft Visual Studio Code, but students are free to use another editor if they prefer to do so.
Lab computers in SELE 2249F have the required software pre-installed, however students are encouraged to use a personal device if possible as this typically allows more convenient and immediate access. UIC also has a virtual computer lab that allows any device with a web browser to remotely control an on-campus lab computer that has all of the required software pre-installed.
There are no required textbooks. I do not recommend purchasing any textbooks.
There are several optional texts that are available online without any purchase (though some are available only to current UIC students). The lecture slides will often reference sections or chapters of optional texts, and when such references are given, it is a good idea to consult the texts.
See the course site in Blackboard for the list of optional texts with links to access them.
Lectures and labs are held in person in the rooms listed above, and under normal circumstances, attending each course meeting in person is required.
Students should not come to class while sick or while experiencing symptoms of illness. We understand that occasional absences happen for various other reasons as well.
For lectures, we provide two alternative means to view the lecture if you cannot attend in person:
Note that streaming and recording is handled automatically by a system managed by UIC IT. If you encounter any issues accessing streams or recordings, contact ITHelp@uic.edu.
No permission is needed to attend lecture remotely using the live stream or to view a recording in place of coming to lecture. However, students should not use these alternative means on a regular basis. Delivery of the lectures is optimized for the in-person experience.
The weekly labs are longer meetings focused on students working individually or in small groups on activities that reinforce and expand on the lecture material with the guidance and assistance of one of the course TAs. This important practice is an essential part of the course, and is more difficult to replicate remotely. Labs will not be live streamed or recorded, and students who will miss a lab for any reason should email their TA as soon as possible (ideally in advance).
Attendance will be recorded in each weekly lab meeting, and lab attendance will account for 10% of the final grade. The way this will be done is by assigning a score of 0 (absent) or 1 (present) to you for each lab. At the end of the semester your two lowest lab attendance scores will be dropped, and the remaining scores averaged. Since there are 15 labs in total, this means that as long as you attend at least 13 of them, your lab attendance score will be 100%.
Except in cases of a last-minute emergency that prevents alternate plans from being made, if the instructor cannot give a lecture on campus at the regular time (e.g. due to illness, required quarantine, or other unexpected event), one of these things will happen:
The exact plans will be announced on the course web site, with as much advance notice as possible. Instructor absences are expected to be rare.
The lab will be run by a substitute TA or instructor, except in case of a last-minute emergency in which case a lab would be cancelled. TA absences are expected to be rare.
This is a week-by-week list of course meetings, assignments, due dates, and other significant events. See the subsequent sections for detailed explanations of the various types of work (worksheets, homework, projects, etc.).
python3 pip install notebook
, to use the notebook environment locally in Week 3python3 pip install pillow
, if you want to be able to generate PNG images using the maze example codeset
and defaultdict
; working with CSV and JSONpython3 pip install pillow
to prepare for week 8python3 pip install numpy
to prepare for week 8pillow
) and multidimensional numerical arrays (numpy
)python3 pip install matplotlib
to prepare for week 9numpy
application example (Julia sets); plotting with matplotlib
SQLite
; HTML and CSS basicspython3 pip install Flask
to prepare for week 11Flask
modulepython3 pip install beautifulsoup4
to prepare for week 13urllib
); parsing and extracting data from HTML documents (bs4
)There are three types of work in MCS 275: ungraded worksheets that are the focus of Tue/Thu labs, weekly homework, and four larger programming projects. Details about each type of work are given in the subsequent sections.
Note in particular that there are no midterm exams, no final exam, and no other high-stakes assessments. I have tried to distribute graded work across the semester as evenly as possible because I believe this gives the most accurate assessment of your progress. There are also no graded in-class quizzes or tests.
All work that is graded in MCS 275 is collected on Gradescope, an online assignment submission system that you can access from the course Blackboard site.
The main activity of the Tue/Thu labs will be students working individually or in small groups on a worksheet of problems and short coding exercises that reinforce and expand on the previous week's lecture material. The worksheet for each week will be posted to the course site before the lab meeting. If the worksheet is not completed during lab, students are encouraged to complete the remaining problems on their own.
Starting in week 3 of the semester, the first problem on each worksheet will be handled differently depending on which lab you are enrolled in:
Each week's worksheet is designed to prepare you for the homework that is due the following Tuesday. The worksheets are meant to be challenging.
Worksheet solutions will be posted each week, and students will be allowed to refer to these solutions while working on the week's homework. However, having solutions available should not been seen as a substitute for the practice you get by completing the worksheet yourself.
Collaboration on worksheets is strongly encouraged (inside or outside labs).
Each week, a homework assignment will be posted in Gradescope on Thursday afternoon. The submission deadline will be indicated on the assignment and can be checked on Gradescope. Usually, the deadline will be the following Tuesday at Noon.
Homework is to be completed individually, outside of class meeting times. It is meant to be somewhat less challenging than the week's worksheet.
Homework is graded primarily by the TA and reviewed by the instructor.
Completing homework regularly and doing well on the assignments is important, but we understand students face occasional variations in their workload (e.g. midterms, deadlines in other courses, etc.) and other circumstances that interfere with their work on MCS 275. To account for these, we give you several opportunities to miss an assignment without affecting your grade, as described below.
Twice in the semester, you can ask to be excused from an upcoming homework assignment without giving any reason. However, you need to ask before the homework assignment is due. This is meant to help you deal with unexpected changes in workload or available time by simply skipping an assignment. If you use this policy to be excused from a homework assignment, it is expected that you will not submit any work on it at all. And if you do submit work to an assignment you've been excused from, it won't count toward your grade. Being excused from an assignment is a one-way process; once excused, you cannot receive credit for the assignment.
To use one of these excuses on an upcoming assignment, email your TA.
Also, you cannot use this option to be excused from the first homework assignment.
At the end of the semester, the two lowest homework grades that haven't been excused will be dropped.
The two policies listed above (homework excuses and dropping low scores) provide ways to avoid a missed homework deadline affecting your final score. If students ask for an extension on a homework assignment due to some extenuating circumstance, we will usually prefer that they user one of these methods instead of an actual deadline extension. However, the full course policy on missed and late work can be found below,
Collaboration is not permitted on homework. Each assignment will list what textbooks and online resources students are allowed to consult, if any.
Four coding projects will be assigned during the semester. These will be substantial projects that students work on over a longer period, writing a program or set of programs to meet given specifications. These specifications, the project descriptions, will be posted to the course web site.
Reading and understanding the project description is a serious undertaking, as is the design and implementation of a program that meets the requirements therein. Completing a project thus requires effort spread over a number of days, and is not expected to be possible with a single period of intense last-minute work.
Projects will be submitted using Gradescope. The due dates for the projects are listed in the Important dates and deadlines section above. Once a project is accepting submissions, its deadline can also be seen in Gradescope.
Each student's project submission will be graded in two ways: First, an automated system (the "autograder") will run a series of tests to see whether the submission performs the requested tasks. Students can view the autograder report shortly after submission, and can use the results to revise and resubmit their project (before the deadline).
There is no limit to the number of submissions before the deadline, but only the last submission received before the deadline will count toward the project grade.
Students who make only one submission to the autograder—and who thus do not use its feedback to improve their projects—will often lose many points due to small and easily corrected errors, such as formatting differences or off-by-one mistakes.
Please avoid this by planning to make your first submission to the autograder well before the deadline.
The results of the autograder will account for most of the points available for projects 1, 2, and 3; the exact fraction will vary from project to project. Project 4 allows more flexibility in choosing a topic, and so the autograder will only perform basic syntax checks and will account for a small fraction of the total points.
For each project, a manual code review by the instructor will check for adherence to the course coding requirements, sufficient comments, and any other things specified in the project description that are not directly checked by the autograder. Some feedback will be given at this stage to help students improve their performance on future projects.
All four projects count toward a student's final grade.
For projects 1, 2, and 3, students may consult the course texts and the lecture slides or videos when working on projects. However, each student must be the sole author of the code they submit for a project; copying code from online resources or from other students is not permitted, nor is seeking assistance on projects from anyone other than course staff.
Project 4 will be more open-ended and allow more possibilities for collaboration and use of external resources. Those policies will be included in the project 4 description.
The project deadlines are important: Unless an extension is granted (see course policy on missed and late work), a project submitted after the deadline will receive no credit. If you know you will miss a project deadline, ask for an extension and indicate the new deadline you are requesting.
Code submitted for a grade in MCS 275 must follow some basic formatting rules in order to be eligible for full credit. These rules are collected in a coding standards document which is also available on the course web page.
The rules encourage good coding practices and make programs more readable.
In general, meeting the deadlines for course work is important, and extensions will be considered only when there are extenuating circumstances.
Students who believe they are likely to miss a project deadline are encouraged to contact the instructor and explain the situation. When requesting an extension, it is always helpful to specify a specific new deadline you would be able to meet. Requests for "as much additional time as possible" are difficult to evaluate.
Students who add the course after the first meeting should contact the instructor to develop a plan for the work they have missed (e.g. extension or excuse from missed assignments and attendance scores).
As mentioned in the section about homework, we prefer to handle missed homework deadlines through the mechanisms that allow you to be excused from an assignment, or to have its score dropped as one of your two lowest. With the weekly pace of homework, an extension on homework also carries a serious risk of putting you behind on the next assignment with cascading negative effects. For these reasons, we rarely grant extensions on homework deadlines.
Everything you submit for a grade in this course must be entirely your own work. You are also not allowed to give or receive assistance on graded work in MCS 275, except for assistance given by course staff or which is explicitly allowed by the assignment instructions.
Here are some examples of activities that violate the rules in MCS 275 and hence constitute academic misconduct. Keep in mind this list is not exhaustive.
It is usually very easy to detect instances of cheating and plagiarism, often without any special tools. However, in MCS 275, we also use automated tools to detect cheating. We can easily tell if two pieces of code differ by changing variable names, adding and removing comments and indentation, and other common superficial evasion techniques. If you are ever tempted to cheat, please do not take the risk! Instead, contact the course staff and discuss what you are struggling with. Extension requests are always given serious consideration while instances of cheating are never tolerated.
Incidents of academic misconduct will be reported to the Dean of Students office and handled under UIC's Student Disciplinary Policy for investigation, hearings, and possible sanctions. No warning will be given in advance. The penalties for academic misconduct are typically quite severe, and the disciplinary proceedings are very slow. A course grade will not be assigned while such proceedings are underway, and this can create its own problems (e.g. with registering for courses having MCS 275 as a prerequisite, etc.).
The use of AI writing tools (including, but not limited to, ChatGPT, Bard, and Copilot) is NOT permitted in this course unless the instructions for a specific assignment specify otherwise. Such AI tools are evolving rapidly, and some of them can generate simple program code or documentation text in response to requests or prompts. However, the code generated by such tools is sometimes subtly wrong. In this course you will work toward the proficiency in reading and writing computer programs that would be necessary to responsibly use AI coding tools, and completing the course assignments without such assistance is an essential part of that. Therefore, students who use such tools for class assignments undermine the learning objectives of this course, reducing the effectiveness of the instruction and feedback we provide. Any confirmed use of generative AI on course work where it is not explicitly permitted will be treated as cheating and handled under the course academic integrity policy.
The course grade is computed as an average of homework, projects, and attendance scores, weighted as follows:
When final course grade percentages are available, they will be converted to letter grades according to the following scale:
Note that the scale above does not involve any rounding, so for example a final percentage of 74.97% corresponds to a grade of C. Also, raw percentages are used in all cases, with no modification or "curve".
Outside of course meetings, office hours, and scheduled appointments, email and Discord are the best ways to contact course staff in most cases. Please only email course staff from your @uic.edu
email address so that we can easily match your email address with the course roster.
The instructor will usually respond to email or Discord questions within 24 hours. Response over a weekend may be slower.
Keep in mind that questions received in the last few hours before a course deadline (for a homework assignment or project) usually cannot be answered in time to help you with your work. It is a good idea to seek assistance as far in advance as possible.
Students are welcome to discuss course material and work together outside of class, subject to the collaboration policies of the various course assignments.
The course Discord server can also be used to communicate with other students in the class (as a group, or through individual private messages).
UIC values diversity and inclusion, as do I. Regardless of age, disability, ethnicity, race, gender, gender identity, sexual orientation, socioeconomic status, geographic background, religion, political ideology, language, or culture, we expect all members of this class to contribute to a respectful, welcoming, and inclusive environment for every other member of the class. If aspects of this course result in barriers to your inclusion, engagement, accurate assessment, or achievement, please notify the instructor as soon as possible.
If your name does not match the name on the class roster, please let me know as soon as possible. Alternatively, if the only difference between your name and the one on the course roster is a different first name, you can use a university tool to specify a "preferred name". See Preferred Name & Personal Pronouns from UIC IT.
My pronouns are she/her and they/them. I welcome your pronouns if you would like to share them with me. There is also a university tool that allows you to specify your personal pronouns in a way that is automatically shared with instructors of all courses you are registered for, if desired. For details see Preferred Name & Personal Pronouns from UIC IT. For more information about pronouns, see this page: https://www.mypronouns.org/what-and-why.
Students are expected to:
The University of Illinois at Chicago UIC is committed to full inclusion and participation of people with disabilities in all aspects of university life. Students who face or anticipate disability-related barriers while at UIC should connect with the Disability Resource Center (DRC) to create a plan for reasonable accommodations. In order to receive accommodations, students must disclose disability to the DRC, complete an interactive registration process with the DRC, and provide their course instructor with a Letter of Accommodation (LOA). Course instructors in receipt of an LOA will work with the student and the DRC to implement approved accommodations.
It is important to share any DRC LOA with the instructor as early in the semester as possible so there is ample time to make arrangements for any corresponding accommodations.
The UIC Senate Policy on religious holidays (last updated Feb 2, 2023) is as follows:
The faculty of the University of Illinois Chicago shall make every effort to avoid scheduling examinations or requiring that student projects be turned in or completed on religious holidays. Students who wish to observe their religious holidays shall notify the faculty member by the tenth day of the semester of the date when they will be absent unless the religious holiday is observed on or before the tenth day of the semester. In such cases, the students shall notify the faculty member at least five days in advance of the date when they will be absent. In cases when the exact date(s) of the religious holiday is/are not known at the start of the semester, the student should notify the faculty member as soon as the exact date is known. Students should be asked to report if such situations might occur within the first four weeks of the semester. The faculty member shall make every reasonable effort to honor the request, not penalize the student for missing the class, and if an examination or project is due during the absence, give the student an exam or assignment equivalent to the one completed by those students in attendance. If the student feels aggrieved, they may request remedy through the campus grievance procedure.
The UIC office of access and equity maintains a Calendar of University Holidays and Religious Observances.
Students can request accommodations based on a religious observance (regardless of whether it is listed in the university calendar) by emailing the instructor. The university has an official Student Request for Religious Accommodation Form you can fill out and attach, or you can just include the relevant information in the body of a short email.
Following campus policy and Title IX of the Education Amendments of 1972, pregnant students have specific rights to accommodation. To request pregnancy-related accommodations, contact the UIC Title IX Coordinator at titleix@uic.edu or 312-996-8670.
Any change to the document other than filling in missing information (such as office hours still to be determined) will be recorded here.