A document from MCS 275 Spring 2024, instructor Emily Dumas. You can also get the notebook file.

Basics

  • Course number: MCS 275
  • Course title: Programming tools and file management
  • Credit hours: 4
  • Course Blackboard site
    • Note: It is essential to log into the course site regularly.
    • Email LTS@uic.edu if you have questions about Blackboard or encounter problems accessing it.
  • Modality - this course is taught ON CAMPUS
  • Lectures - three times a week; every student is in one of these sections:
    • MWF 12:00-12:50PM in Taft Hall 215 (CRN 44167)
    • MWF 1:00-1:50PM in Lincoln Hall 100 (CRN 16583)
  • Labs - once a week in Science & Engineering Lab East 2249F; every student is in one of these sections:
    • Tue 1:00-2:50PM (CRN 44168, TA Dubin, linked to 12pm lecture)
    • Thu 1:00-2:50PM (CRN 44169, TA Ward, linked to 12pm lecture)
    • Tue 3:00-4:50PM (CRN 16581, TA Dubin, linked to 1pm lecture)
  • Instructor
    • Emily Dumas (edumas@uic.edu)
    • Drop-in office hours: 9am Wednesday and 2pm Friday
    • Drop-in office hours location: SEO 722 (or ask to meet on Zoom)
    • Other availability: Email to request a Zoom meeting or an appointment outside the drop-in hours.
  • Teaching assistants
    • Karoline Dubin (kdubin3@uic.edu)
      • Drop-in office hours: Monday 1pm-3pm
      • Drop-in office hours location: The MSLC, on the third floor of Science and Engineering South (SES)
    • Patrick Ward (pbward2@uic.edu)
      • Drop-in office hours: Thursday 10am-12pm
      • Drop-in office hours location: The MSLC, on the third floor of Science and Engineering South (SES)

Welcome statement

Welcome to MCS 275. As your instructor, my main goals are to

  • Create a positive and welcoming learning environment
  • Make the course policies clear, so that there are no surprises about deadlines, grading, etc.
  • Provide the tools (instruction, activities, and assessments) needed to master the course material
  • Give clear and useful feedback about the work you submit

It is essential that you read this course syllabus because it explains the course policies.

Course description

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.

Prerequisite statement

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.

Course goals and learning objectives

Feel free to skip this section if you just want to know the rules and expectations. The university requires this section to be present.

General goals

Fundamental competencies, capacities, and skills students will gain in this course:

  • Develop proficiency in interpreting complex texts
  • Communicate in an organized and clear manner through technical writing
  • Incorporate feedback to achieve better results
  • Plan, manage, and complete work on projects that span multiple weeks

Specific learning objectives

These learning objectives are central to the purpose of the course, and the course assessments are designed to measure progress toward them:

  • Combine multiple concepts from the course lectures in novel ways to build solutions to complex problems
  • Write programs that follow a precise specification
  • Test and debug computer programs, comparing actual and expected behavior and fixing errors that are found
  • Incorporate results of automated testing of submitted programs into the debugging process
  • Receive and use feedback in the form of code reviews (by course staff) to improve programming practices
  • Read and write technical documentation

Required technology

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.

Required texts

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.

Attendance policy and delivery method

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:

  • Lectures can be live streamed from the Blackboard site using Echo 360, a lecture capture tool that uses cameras built in to our lecture rooms, and
  • Recordings of the lectures will be posted to the Blacboard site (usually later in the same day the lecture occurs)

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).

Recording and grading lab attendance

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%.

Plans in case of instructor absence

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 lecture will be run remotely on zoom, using a zoom meeting link posted on the course blackboard site
  • A substitute instructor will give the lecture
  • An asynchronous lecture video will be recorded and posted to the course site

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.

Plans in case of TA absence

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.

Schedule

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.).

Week 1 (Jan 8-12)

  • Topics: Course introduction and Python review/tour
  • Meetings:
    • Mon Jan 8 - Lecture 1
    • Wed Jan 10 - Lecture 2
    • Fri Jan 12 - Lecture 3
    • Tue Jan 9 or Thu Jan 11 - Lab 1
  • Assignments / documents to review:
    • Worksheet 1 posted (reviews Python basics)
    • Homework 1 posted
    • Worksheet 1 solutions posted
  • Deadlines / special dates:
    • None
  • Feedback / grades available:
    • None
  • Software to install:
    • Python 3.10+ and a code editor (e.g. Visual Studio Code), if you will be doing your coursework on a personal device

Week 2 (Jan 16-19)

  • Topics: Object-oriented programming
  • Meetings:
    • Wed Jan 17 - Lecture 4
    • Fri Jan 19 - Lecture 5
    • Tue Jan 16 or Thu Jan 18 - Lab 2
  • Assignments / documents to review:
    • Worksheet 2 posted (based on week 1 material)
    • Homework 2 posted (based on worksheet 2)
    • Worksheet 2 solutions posted
  • Deadlines / special dates:
    • Mon Jan 15 - No classes Martin Luther King, Jr. Day
    • Wed Jan 17 at Noon - Homework 1 due
    • Fri Jan 19 - Course add/drop deadline
  • Feedback / grades available:
    • Homework 1 returned
  • Software to install:
    • Optional: python3 pip install notebook, to use the notebook environment locally in Week 3

Week 3 (Jan 22-26)

  • Topics: Object-oriented programming (continued), notebooks, context managers
  • Meetings:
    • Mon Jan 22 - Lecture 6
    • Wed Jan 24 - Lecture 7
    • Fri Jan 26 - Lecture 8
    • Tue Jan 23 or Thu Jan 25 - Lab 3
  • Assignments / documents to review:
    • Worksheet 3 posted (based on week 2 material)
    • Homework 3 posted (based on worksheet 3)
    • Worksheet 3 solutions posted
  • Deadlines / special dates:
    • Tue Jan 23 at Noon - Homework 2 due
  • Feedback / grades available:
    • Homework 2 returned

Week 4 (Jan 29 - Feb 2)

  • Topics: Recursion vs. iteration
  • Meetings:
    • Mon Jan 29 - Lecture 9
    • Wed Jan 31 - Lecture 10
    • Fri Feb 2 - Lecture 11
    • Tue Jan 30 or Thu Feb 1 - Lab 4
  • Assignments / documents to review:
    • Worksheet 4 posted (based on week 3 material)
    • Homework 4 posted (based on worksheet 4)
    • Worksheet 4 solutions posted
    • Project 1 description posted
  • Deadlines / special dates:
    • Tue Jan 30 at Noon - Homework 3 due
  • Feedback / grades available:
    • Homework 3 returned

Week 5 (Feb 5-9)

  • Topics: Backtracking; mergesort and quicksort algorithms
  • Meetings:
    • Mon Feb 5 - Lecture 12
    • Wed Feb 7 - Lecture 13
    • Fri Feb 9 - Lecture 14
    • Tue Feb 6 or Thu Feb 8 - Lab 5
  • Assignments / documents to review:
    • Worksheet 5 posted (based on week 4 material)
    • Homework 5 posted (based on worksheet 5)
    • Worksheet 5 solutions posted
  • Deadlines / special dates:
    • Tue Feb 6 at Noon - Homework 4 due
    • Fri Feb 9 at 11:59pm - Project 1 due
  • Feedback / grades available:
    • Project 1 autograder results available immediately upon submission
    • Homework 4 returned
  • Software to install:
    • Optional: python3 pip install pillow, if you want to be able to generate PNG images using the maze example code

Week 6 (Feb 12-16)

  • Topics: Analyzing comparison sorts; trees and binary search trees
  • Meetings:
    • Mon Feb 12 - Lecture 15
    • Wed Feb 14 - Lecture 16
    • Fri Feb 16 - Lecture 17
    • Tue Feb 13 or Thu Feb 15 - Lab 6
  • Assignments / documents to review:
    • Worksheet 6 posted (based on week 5 material)
    • Homework 6 posted (based on worksheet 6)
    • Worksheet 6 solutions posted
    • Project 2 posted
  • Deadlines / special dates:
    • Tue Feb 13 at Noon - Homework 5 due
  • Feedback / grades available:
    • Project 1 code review returned
    • Homework 5 returned

Week 7 (Feb 19-23)

  • Topics: Traversing trees; Python set and defaultdict; working with CSV and JSON
  • Meetings:
    • Mon Feb 19 - Lecture 18
    • Wed Feb 21 - Lecture 19
    • Fri Feb 23 - Lecture 20
    • Tue Feb 20 or Thu Feb 22 - Lab 7
  • Assignments / documents to review:
    • Worksheet 7 posted (based on week 6 material)
    • Homework 7 posted (based on worksheet 7)
    • Worksheet 7 solutions posted
  • Deadlines / special dates:
    • Tue Feb 20 at Noon - Homework 6 due
    • Fri Feb 23 at 11:59pm - Project 2 due
  • Feedback / grades available:
    • Project 2 autograder results available immediately upon submission
    • Homework 6 returned
  • Software to install:
    • python3 pip install pillow to prepare for week 8
    • python3 pip install numpy to prepare for week 8

Week 8 (Feb 26 - Mar 1)

  • Topics: Working with images (pillow) and multidimensional numerical arrays (numpy)
  • Meetings:
    • Mon Feb 26 - Lecture 21
    • Wed Feb 28 - Lecture 22
    • Fri Mar 1 - Lecture 23
    • Tue Feb 27 or Thu Feb 29 - Lab 8
  • Assignments / documents to review:
    • Worksheet 8 posted (based on week 7 material)
    • Homework 8 posted (based on worksheet 8)
    • Worksheet 8 solutions posted
  • Deadlines / special dates:
    • Tue Feb 27 at Noon - Homework 7 due
  • Feedback / grades available:
    • Project 2 code review returned
    • Homework 7 returned
  • Software to install:
    • python3 pip install matplotlib to prepare for week 9

Week 9 (Mar 4-8)

  • Topics: numpy application example (Julia sets); plotting with matplotlib
  • Meetings:
    • Mon Mar 4 - Lecture 24
    • Wed Mar 6 - Lecture 25
    • Fri Mar 8 - Lecture 26
    • Tue Mar 5 or Thu Mar 7 - Lab 9
  • Assignments / documents to review:
    • Worksheet 9 posted (based on week 8 material)
    • Homework 9 posted (based on worksheet 9)
    • Worksheet 9 solutions posted
  • Deadlines / special dates:
    • Tue Mar 5 at Noon - Homework 8 due
    • Project 3 posted
  • Feedback / grades available:
    • Homework 8 returned

Week 10 (Mar 11-15)

  • Topics: Databases; SQL in Python with SQLite; HTML and CSS basics
  • Meetings:
    • Mon Mar 11 - Lecture 27
    • Wed Mar 13 - Lecture 28
    • Fri Mar 15 - Lecture 29
    • Tue Mar 12 or Thu Mar 14 - Lab 10
  • Assignments / documents to review:
    • Worksheet 10 posted (based on week 9 material)
    • Homework 10 posted (based on worksheet 10)
    • Worksheet 10 solutions posted
  • Deadlines / special dates:
    • Tue Mar 12 at Noon - Homework 9 due
    • Fri Mar 15 at 11:59pm - Project 3 due
  • Feedback / grades available:
    • Project 3 autograder results available immediately upon submission
    • Homework 9 returned
  • Software to install:
    • python3 pip install Flask to prepare for week 11

Spring break (Mar 18-22)

  • No meetings or deadlines in this period
  • No office hours will be held

Week 11 (Mar 25-29)

  • Topics: Web applications, HTTP, using the Flask module
  • Meetings:
    • Mon Mar 25 - Lecture 30
    • Wed Mar 27 - Lecture 31
    • Fri Mar 29 - Lecture 32
    • Tue Mar 12 or Thu Mar 14 - Lab 11
  • Assignments / documents to review:
    • Worksheet 11 posted (based on week 10 material)
    • Homework 11 posted (based on worksheet 11)
    • Worksheet 11 solutions posted
  • Deadlines / special dates:
    • Tue Mar 26 at Noon - Homework 10 due
  • Feedback / grades available:
    • Project 3 code review returned
    • Homework 10 returned

Week 12 (Apr 1-5)

  • Topics: Finishing the sample web application; forms and HTTP POST requests
  • Meetings:
    • Mon Apr 1 - Lecture 33
    • Wed Apr 3 - Lecture 34
    • Fri Apr 5 - Lecture 35
    • Tue Apr 2 or Thu Apr 4 - Lab 12
  • Assignments / documents to review:
    • Worksheet 12 posted (based on week 11 material)
    • Homework 12 posted (based on worksheet 12)
    • Worksheet 12 solutions posted
    • Project 4 posted (documentation-focused; use SQLite or request custom topic)
  • Deadlines / special dates:
    • Tue Apr 2 at Noon - Homework 11 due
  • Feedback / grades available:
    • Project 4 custom topic requests will be answered as received
    • Homework 11 returned
  • Software to install:
    • python3 pip install beautifulsoup4 to prepare for week 13

Week 13 (Apr 8-12)

  • Topics: Making HTTP requests with Python (urllib); parsing and extracting data from HTML documents (bs4)
  • Meetings:
    • Mon Apr 8 - Lecture 36
    • Wed Apr 10 - Lecture 37
    • Fri Apr 12 - Lecture 38
    • Tue Apr 9 or Thu Apr 11 - Lab 13
  • Assignments / documents to review:
    • Worksheet 13 posted (based on week 12 material)
    • Homework 13 posted (based on worksheet 13)
    • Worksheet 13 solutions posted
  • Deadlines / special dates:
    • Mon Apr 8 - Latest date to request a non-SQLite Project 4 topic
    • Tue Apr 9 at Noon - Homework 12 due
    • Wed Apr 10 - Suggested date by which to finalize Project 4 topic/plan (not necessary to share with instructor unless it is a non-SQLite topic)
    • Fri Apr 12 - Latest date to receive approval of non-SQLite Project 4 topic
  • Feedback / grades available:
    • Project 4 custom topic requests will be answered as received
    • Homework 12 returned

Week 14 (Apr 15-19)

  • Topics: Variadic functions; decorators; running programs in a debugger
  • Meetings:
    • Mon Apr 15 - Lecture 39
    • Wed Apr 17 - Lecture 40
    • Fri Apr 19 - Lecture 41
    • Tue Apr 16 or Thu Apr 18 - Lab 14
  • Assignments:
    • Worksheet 14 posted (based on week 13 material)
    • Homework 14 posted (based on worksheet 14)
    • Worksheet 14 solutions posted
  • Deadlines / special dates:
    • Tue Apr 16 at Noon - Homework 13 due
  • Feedback / grades available:
    • Homework 13 returned
  • Software to install:

Week 15 (Apr 22-26)

  • Topics: Version control, collaboration, git, and GitHub
  • Meetings:
    • Mon Apr 22 - Lecture 42
    • Wed Apr 24 - Lecture 43
    • Fri Apr 26 - Lecture 44
    • Tue Apr 23 or Thu Apr 25 - Lab 15
  • Assignments:
    • None
  • Deadlines / special dates:
    • Tue Apr 23 at Noon - Homework 14 due (last homework of the semester)
    • Fri Apr 26 at 11:59pm - Project 4 due (last deadline in MCS 275)
  • Feedback / grades available:
    • Basic syntax check results for Project 4 available immediately upon submission
    • Homework 14 returned

Week 16 - Final Exam Week (Apr 29 - May 3)

  • There is no final exam
  • No meetings or deadlines in this period
  • No office hours will be held

After Week 16

  • Project 4 code review, project 4 grades, and course grades made available on Blackboard when available
  • Instructor must submit course grades to university by Tue May 7
  • Course grades made available on my.uic.edu on Mon May 13
  • Course materials made available on public archival web site by Fri May 17

Types of course work

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.

Worksheets

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:

  • Tuesday lab students: Problem 1 will be completed in a group discussion led by the TA.
  • Thursday lab students: Attempt problem 1 before lab, and bring your solution or work to present.

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.

Worksheet collaboration policy

Collaboration on worksheets is strongly encouraged (inside or outside labs).

Homework

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.

Two no-reason homework excuses

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.

Two lowest grades dropped

At the end of the semester, the two lowest homework grades that haven't been excused will be dropped.

Usually we avoid giving extensions on homework

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,

Homework collaboration policy

Collaboration is not permitted on homework. Each assignment will list what textbooks and online resources students are allowed to consult, if any.

Projects

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.

No low project scores are dropped

All four projects count toward a student's final grade.

Project collaboration policy

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.

Project deadlines are important

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.

Coding standards

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.

Policy on missed or late work

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.

Academic integrity

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.

  • Sending your code for a homework question or project to another student to submit as their own, or to use as a reference as they work on the assignment
  • Searching the internet for answers to a homework question or for help with a project
  • Asking for help solving homework problems or part of a project in an online forum or commercial service
  • Asking an instructor or TA in another course a question for the purpose of using their answer as a solution to a homework problem or as part of a project in MCS 275

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.).

Use of generative AI

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.

Course grade computation

Things that contribute to your grade

The course grade is computed as an average of homework, projects, and attendance scores, weighted as follows:

  • 45% - Homework
    • Any assignments you were excused from are removed from consideration
    • Then, the two lowest scores that remain are removed
    • The remaining scores are converted to percentages, and those are averaged
  • 45% - Projects
    • All project grades are converted to percentages
    • The percentages are averaged
  • 10% - Lab attendance
    • We make a list of lab attendance scores, each of which is 0\% if absent and 100\% if present
    • The two lowest scores in this list are removed
    • The remaining ones are averaged

Fixed grading scale

When final course grade percentages are available, they will be converted to letter grades according to the following scale:

  • A = 85% - 100%
  • B = 75% - 84.9999%
  • C = 65% - 74.9999%
  • D = 55% - 64.9999%
  • F = less than 55%

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".

Communication with course staff

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.

Communication with other students

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).

Classroom environment

Inclusive community

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.

Name and Pronoun Use

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.

Conduct

Students are expected to:

  • Be present by avoiding use of cell phones in class for purposes unrelated to the course or engaging in other activities that distract from participation.
  • Be respectful of the learning space and community. For example, there should be no side conversations or unnecessary disruptions.
  • Use preferred names and pronouns of classmates and course staff (when provided).
  • Be mindful of one another’s privacy, and to not bring people to the classroom who are not registered for the course without advance permission.

Accommodations

Disability accommodations

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.

Religious 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.

Pregnancy Accommodations

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.

Revision history of this document

Any change to the document other than filling in missing information (such as office hours still to be determined) will be recorded here.

  • 2024-01-04 Initial publication (no office hours info yet)
  • 2024-01-07 Add Dumas office hours
  • 2024-01-08 Add Ward office hours
  • 2024-01-19 Add Dubin office hours
  • 2024-02-14 Correct Ward office hours
  • 2024-03-12 Update Dumas pronouns
  • 2024-05-14 Update Dumas name, pronouns