MI 250: Intro to Applied Programming - Syllabus
Table of contents
Spring 2026 Time and Location
Mondays and Wednesdays, 10:20am-12:10pm
Holmes Hall C102
Synchronous, in person – no hybrid options available
Instructors
Instructor: Morgan Vigil-Hayes Email: vigilhay@msu.edu
Office hours: In-person or virtually, Wednesdays, 1:00-2:00pm or by appointment (please email to schedule appointment). If you join on Zoom, you will be directed to a waiting room initially. Office: Room 424, Communication Arts and Sciences building
Teaching assistant: Huajie “Jay” Cao Email: caohuaji@msu.edu
Office hours: In-person or virtually, Tuesdays, 1-2:30pm. If you join on Zoom, you should use this link with the passcode: 013966. Office: Lab 22, basement of the Communication Arts and Sciences building
Course Description
This course is an undergraduate course aimed at students who have little to no programming experience, but who need to have foundational programming skills as part of their career. The goals of this course are to teach students about programming in a project-oriented setting, giving them the skills they need to work on larger teams that involve software development and data analysis. While the course will explore a bit about the computational architectures and data structures that undergird some of the how'' andwhy’’ Python implements particular constructs, the bulk of the technical focus will be on application of programatic thinking, project management, and programming to solve problems.
While this course is not intended for folks with substantial prior programming experience, some students who have taking a programming courses with more computational emphasis (e.g., CSE 231) have said that this course has been complementary to their understanding of how programming works in context. This is a required course for multiple majors and minors in media and information, but the requirement can be waived in many cases for students who have taken other programming courses or have demonstrated experience with programming.
Required Technology
All students are REQUIRED to bring a laptop computer to every class running either MacOS, Linux, or Windows. Every student will be creating a development environment on their own computer in the first 2 weeks of class. Every student will be required to practice writing and running code on their own computers.
If you need a new computer, the MSU Tech Store sells both Apple and Windows laptops at discounted prices for students. If your laptop breaks or is temporarily unavailable during the semester, talk with Dr. Vigil-Hayes about accommodations. MSU also has a Laptop Loan program which students who have a temporary need for a laptop can apply for.
All course materials can be found on:
- The course website (this website, https://msu-mi250.github.io)
- D2L (d2l.msu.edu)
- Gitlab (gitlab.msu.edu)
You will not be required to purchase any software for this course. The course will predominantly use the Python programming language, Git, and related tools, all of which are open source and/or freely available. You do not need to install anything ahead of time – we will be doing all of that work in class.
In-class technology usage
Students are expected to use their laptops in class for in-class work, and should bring their laptops to every class. Smartphone and tablet usage are strongly discouraged, though you may bring a smartphone for multifactor authentication if needed. Phone calls and texting in class are prohibited. If you need to make or receive a phone call, step outside of the classroom first. Talking on your phone in class is disrespectful to the instructors and to your classmates and will result in a lower grade for the day.
Similarly, scrolling on social media (broadly defined) is prohibited during class and will result in a lower grade for the day. A best practice is to bring a smartphone for MFA and emergencies and keep it in your backpack/bag while we are in class.
Course Structure
This course has 5 main elements:
- Summary+Quiz+Questions: reading / watching content, answering quiz questions about the content, and summarizing / asking questions about content in ways that relate to students’ own lives (every week, due after the first class of the week).
- Labs: set exercises for learning and practicing concepts in programming, done in class with partners (usually on Mondays)
- Studios: open-ended creative exercises for practicing and applying programming concepts, done in class in groups of 2 (usually on Wednesdays). These also require some project management prep prior to class on Wednesdays.
- Code Walks: Every week on Monday, 2 teams of students will be randomly selected to give a code walk of their studio from the previous Wednesday.
- Code Quality Check: We will be selecting 6 students each week at random to do a code quality check. We will be assessing the code quality of your lab and studio for the week in depth.
- Homework: larger homework assignments to learn/practice skills and think about programming in practice (every 2-3 weeks, 5 in total)
- Final project: a multi-week project at the end of the semester started in class and due at 11:59pm, Sunday, April 26, 2026).
This course does NOT have any exams. This course is incredibly project and activity heavy. You will be expected to spend most of every class actually programming. Attendance is part ofyour grade for Studios and Labs.
Pair Programming
Students in this course will practice a concept called pair programming, which originated with programmers at tech companies. Pair programming is based on the idea of “two programmers, one computer:” two programmers work together on the same code using one computer between them. One person is the driver: they are the person using the computer and typing the code. The other person is the observer, also known as the navigator: they do the bigger picture thinking, look up relevant information, and help spot mistakes. In this class, students will switch roles on a regular basis. Students who participate in pair programming get stuck and frustrated less often than students working by themselves and are also able to practice teamwork and communication – which is why we practice it in this class!
In labs: students will be randomly assigned in pairs at the beginning of class. You’ll likely work with someone different every week. You will practice pair programming for every lab.
In studios: students can choose who they work with and can work in groups of 2, but if there is an odd number of students, we can increase the max to three on a case-by-case basis. We encourage you to practice pair programming in whatever way makes sense for your group rather than all working on your own computers. You should be talking with your group members frequently.
Coursework
Summary + Questions + Quiz
Every week students will be asked to read or watch a few articles and videos about programming and to submit a “Summary + Quiz + Question” on D2L which is due before the first class of that week (usually Monday). These are under Quizzes on D2L and are labeled by week and are graded based on the check/check-plus/check-minus rubric. This should take you between 30 minutes and 1 hour each week.
All readings and videos are available for free and are linked on the readings page for each week (found in the Topics/Readings column on the course schedule). You will not be required to purchase any textbooks or other materials to complete the summary+quiz+questions.
Summary: one paragraph max (at least 3 sentences). These will always be guided summaries rather than just repeating facts. There will be a prompt on the readings page for each week which will usually ask you to explain what you’ve learned in your own words and to apply it to your own experiences. If your summary is too short or too long, or doesn’t answer the prompt, you may be marked down for it.
Question: one question relating to that week’s topic. The question can be about one of these things:
- Confusion: something you didn’t understand and want clarification on
- Curiosity: something you want to learn more about
- Connection: apply one of the concepts from the week’s topic to your own life or work (this might be a statement rather than a question; that’s okay)
Quiz: This will be 2-5 questions that examine your mastery of the skill practiced in class this week. These will be multiple choice or fill-in-the-blank questions.
If your summary+question+quiz is missing either a summary or a question, has unattempted quiz questions, OR if it’s turned in late, you will get a 0 (unless you have documented extenuating circumstances with CAS). We use your summaries and questions to understand what students are having trouble with so we can talk about it at the beginning of class on Wednesdays, so it’s important to turn them in on time.
Labs
Labs will usually be on Mondays. Labs cover one or more specific concepts relating to the topic of the week; their goal is to give you a chance to put the concepts in practice. Programming is very hard to learn through reading alone, which is why we practice it in class with partners. Each lab has a series of small, structured exercises that you and your partner will go through together using pair programming. Partners for labs are assigned randomly at the beginning of class.
Labs are graded using the check/check-plus/check-minus system. Grades are based on:
- Effort (did you work on the lab for the entire class?)
- Attendance (did you attend the whole class OR did you complete all of the exercises satisfactorily?)
- Teamwork (did you help others?)
- Completeness (does your solution completely engage with all exercises of the lab? For a check-plus or beyond, does it engage with all challenges?)
While labs are started in class, you are expected to complete all exercises–even if this means working on the software at home. Be sure to coordinate with your lab partner on how you plan to complete this work.
Check-plus-plus = 100% of points Check-plus = 90% of points Check = 75% of points Check-minus = 65% of points Zero = 0% of points
Studios
Studios will usually take place on Wednesdays. HOWEVER, your team is required to do some Studio preparation prior to when the Studio takes place as part of your practice of project management. Unlike labs, studios are more open-ended exercises that allow you to practice – and be creative with – the concepts you learned in the lab that week and over the course of the semester. Studios are done in groups of 2-3 people. You can choose who you work with for studios.
Every studio requires a Project Management Plan (PMP) to be submitted prior to doing the studio in class. For earlier weeks, PMPs will be less complex; for later weeks, PMPs will be more complex. Please plan accordingly.
Studios are also graded using the check/check-plus/check-minus system. Grades are based on:
- Preparation (did you set up a PMP that allowed you to get started effectively?)
- Effort (did you work on the studio for the entire class?)
- Attendance (did you attend the whole class?)
- Teamwork (did you collaborate consistently with your group?)
An additional plus might be added for technical challenge:
- Creativity (are you attempting a creative solution to the problem?)
- Challenge (are you extending the technical rigor of the solution?)
Studios are NOT graded on how “good” your code is or whether everything works as intended at the end of class.
Code Walks
Every week, two Studio groups will be selected at random to do a Code Walk for the class. This is a common practice for teams that create software and is a useful skill for learning how toreview and refine your own code.
Code Walks will involve a 10 minute presentation for the class that involves:
- A 4-minute overview of the PMP
- For each partner, there will be a 3-minute overview of one of the code modules you feel is well-developed. You and your partner will be responsible for providing an explanation of how the section code works, how it maps to the PMP. You will run your code as a demo.
Your Code Walk will be graded on the following:
- Preparedness (is it clear you have spent careful time on the PMP and used it to authentically guide your code development?)
- Code style (is your code clearly organized with comments about what each logical unit is accomplishing such that it maps to the pseudo code in the PMP? is it easy to read your code and understand what is going on?)
- Depth of understanding (are you a clear expert on the part of the code you are presenting? Can you clearly articulate what it is doing and why? Do you have a strong understanding of how it fits into the larger program?)
Grades:
-
Check (75%): You are prepared such that you have been working on the studio. Your Kanban board reflects at least some progress and it matches what you demonstrate. You may have some difficulty articulating your code, but you are not completely clueless.
-
Check-plus (90%): You are prepared beyond just working on the studio. Your Kanban reflects more than 2-3 issues having been worked on and it matches what you demonstrate. You can articular what your code does, but might have a bit of trickiness with strong documentation, readability.
-
Check-plus-plus (100%): You are well-prepared beyond just working on the studio. Your Kanban reflects substantial progress or deep thought about the studio (commensurate with the studio). Your code style and documentation is very strong and easy to read. You have a very strong understanding about your code and why you chose a particular implementation strategy.
-
Check-minus (65%): You have a studio repository, but the PMP is incomplete and it does not seem like you made much progress on the studio beyond what you did in class in the previous week. You are not able to articulate what you did or why you made particular choices in your implementation. You do not really clear about how your code connects to other components of the project.
-
Zero (0%): You are not in class and you already used up your freebie absences and do not have a documented and accepted excuse.
Code Check
Homework
Throughout the semester (every 2 to 3 weeks), students will be asked to complete homework assignments in addition to the weekly summary+question. These are longer form assignments and will not generally involve writing code. The goal of them is to give you skills that will help you in the labs and studios, and to make you think more about how programming fits into your life and into the world more broadly.
Homework assignment schedule:
| # | Topic | Due |
| HW 1 | Error Messages | Week 4 |
| HW 2 | Searching | Week 7 |
| HW 3 | Vibe Coding | Week 9 |
| HW 4 | Jobs | Week 11 |
| HW 5 | Ethics | Week 13 |
All homework assignments will be due on Wednesdays before the start of class. Instructions for each assignment will be on the course website and will be available at least 2 weeks before the due date. You’ll turn the assignments in on D2L. Each assignment will likely take 1-2 hours to complete.
Homework is also graded using the check/check-plus/check-minus system. Grades are based on:
- Thoroughness (did you follow all of the instructions / do all of the tasks?)
- Effort (did you make an honest attempt at doing the assignment?)
Final project
The final project is a long-form studio done with a group starting the last week of the semester. Unlike a normal studio, students will be expected to work on the same project over multiple class periods (the full last week of class will be devoted to this project) and also outside of class if the project can’t be completed during class.
Final projects are due April 26, 2026 at 11:59pm.
Turning in work
In-class work will be turned in via a combination of D2L and Gitlab. You will turn in summary+questions and homework individually on D2L. Work from in-class activities will be turned in by at least one person in each pair/group through D2L (screenshots and other evidence of work) and Gitlab (code) at the end of each class. We will start using Gitlab in Week 3.
Honors option
This course does have an honors option for students in the honors college. If you want to do an honors option, talk with Dr. Vigil-Hayes within the first three weeks of class.
Coursework Expectations and Grading
Grades in this class are mostly based on attending class and making an honest effort to engage with the material, both in and outside of class. The final project is the only work in which students will be graded on the programming skills they’ve developed over the semester. Grades are broken down in this way:
| Summary + question + quiz (14 SQQs @ 1 point) | 14% |
| Labs (13 labs in class @ 1 point) | 13% |
| Studios (11 studio class sessions @ 1 point) | 11% |
| Studio Project Management Plans (11 studio PMPs @ 2 points) | 22% |
| Code walk (once per semester @ 6 points) | 6% |
| Random code quality check (two code checks @ 5 points) | 10% |
| Homework (5 homeworks @ 0.8 points) | 4% |
| Final project (20 points) | 20% |
Grades will be input on D2L and are calculated continuously – you will always know where your grade stands for the class by looking at D2L. Most all grades (except for the final project) are based on a check / check plus / check minus rubric:
-
Check = 7.5/10. You showed up and did the work. This is the base grade for everybody. (You didn’t do anything wrong if you get a check!). You may have a hard time articulating your solutions, but you are trying. You are in class on time and do not leave early. For your summary+question, you have submitted something that demonstrates some thought and at least some engagement with the reading.
-
Check plus = 9/10. You did everything for a check and impressed us: maybe you worked particularly well with your partner that day, had a particularly insightful question, or did a particularly thorough job on the homework. In class, you are able to clearly articulate what you are trying to do from a high-level problem-solving perspective and translate that into a code walk. Your code does not need to be perfect, but you are demonstrating critical thinking about solving the problem. For the summary+question, you demonstrate critical thinking.
-
Check plus plus = 10/10 You did everything for a check plus, but your code demonstrated something extra. Maybe it was innovative problem solving, deep technical rigor, elegant implementation, or some creative flair that made your approach unique and notable. For the summary + question, you really brought a novel perspective and demonstrated deep and personal engagement with the content. I could not have prompted this type of thinking by looking at something on Google or using an LLM.
-
Check minus = 6.5/10. You showed up, but didn’t honestly engage with the work. Maybe you were late to class with no documented excuse, or maybe you spent half the class working on assignments for other classes, looking at social media/phones, or not talking with your partner or group at all. Maybe you put the bare minimum of effort into the summary+question or the homework, e.g, you could ask the question or engage with the summary without doing the reading or engaging deeply with the class work.
Final projects will be graded in two parts:
- Normal studio requirements – graded based on effort, attendance, and participation during the two class periods in the final week of class
- The content of the project – graded based on whether the program works as intended, and on a combination of demonstrating programming skills and creativity.
A rubric for the final project will be released at the beginning of the final week of class.
Grading scale
| 90% | 4.0 |
| 85% | 3.5 |
| 80% | 3.0 |
| 75% | 2.5 |
| 70% | 2.0 |
| 65% | 1.5 |
| 60% | 1.0 |
| Below 60% | 0.0 |
Communication Policies
Dr. Vigil-Hayes and Jay are happy to respond to student questions after class, or via email. Dr. Vigil-Hayes is also happy to meet with students on Zoom/Teams - email her to set up a time to meet. If you have questions about anything course-related, please get in touch!
Email policy: we will respond to email within 24 hours on weekdays, or within 72 hours on weekends (unless otherwise communicated–for instance, sometimes Dr. Vigil-Hayes may be traveling for research). Don’t expect us to see any email sent before or during class until after class has ended. Please include the string “MI250” in the subject line of emails–otherwise, Dr. Vigil-Hayes is likely to lose them in her inbox and may not respond.
Announcements
Announcements about the course will be posted on D2L. Make sure you have allowed D2L to send announcements to your MSU email. You can also have D2L emails forwarded to different email accounts - see instructions to do this in the MSU D2L documentation.
Attendance / Absence / Lateness Policy
This class is very heavily based on attendance and participation – it’s very important that you attend class every week as each week’s content builds on the previous week. If you miss too many classes, you WILL fall behind.
It’s also very important to attend the ENTIRE class – arriving late or leaving early means you will have less time to practice coding, and it will make class more difficult for your partner / groupmates for the day. Your grade for the class will be reduced if you are late or leave early. This includes being late because of bus schedules and parking.
That said, life happens. The 4 lowest grades for in class activities (labs and studios) will be dropped, as will the 2 lowest grades for summary+questions. Only 4 of the 5 homework assignments are required. You can miss up to two weeks of class total without it affecting your grade at all. You do not have to explain why you’re missing class to us. This policy covers the vast majority of absences you might have to take. I will apply this policy to a wide range of circumstances including (but not limited to): “I needed a mental health day”; “My child was sick and needed to stay home from school”; “I tested positive for COVID”; “A family emergency came up”. This also covers needs for absences covered by accomodation letters (see more details in the section on accomodations).
IF there are extenuating circumstances that require you to be absent beyond the 4 built-in absences, please talk to me ASAP and we will try to figure out if continuing the course or withdrawing are more appropriate options for you. A major portion of your grade is based on attendance and participation in pair programming and code walks in class. It is very challenging to accomodate your way around those requirements for the class.
Late Work
As a general rule, I do not accept late work. You have plenty of opportunity to review the schedule and plan. However, if you have documented extenuating circumstances, please communicate with Dr. Vigil-Hayes ASAP.
Late final projects will not be graded in any circumstance. You have plenty of time to submit a link to your final project repository. Failure to do so reflects a serious lack of accountability.
Illness
If you are sick with something contagious (like COVID or the flu), PLEASE PLEASE PLEASE be considerate of your instructors and classmates and STAY HOME! Remember you can miss up to 4 classes with no penalty and no excuse needed. For long-lasting illnesses, see “exceptions” below.
If you have or think you might have COVID and aren’t sure what to do, see MSU’s COVID guidance page.
If Dr. Vigil-Hayes is sick, class may be cancelled.
Exceptions
The “drop 4” policy for in class activities will cover nearly all absences for nearly all students. It is meant to be flexible. If you find yourself needing to miss more classes than that, we will try to work with you to help you keep up with the class. IF you are beyond 4 absences already AND any of the below circumstances apply, we may be able to exempt you from certain classes or homework. Talk to Dr. Vigil-Hayes first and foremost!
Note that missing more than two weeks of class will make it harder for you to keep up, and also harder for you to earn good grades because you won’t be able to participate as much in class. If you need to miss extra class, talk with Dr. Vigil-Hayes and I will help you determine what you might need to do to keep up with the class. All of the exceptions below will be taken into account if you go beyond 4 absences, but the final discretion lies with the instructor.
If you know in advance that you need to miss a class for any of the below reasons, contact Dr. Vigil-Hayes as soon as possible. The more advance notice we have, the easier it will be for us to work with you.
Adding the class late – if you added this class to your schedule at the end of the first week of the semester, you may have missed the first graded homework and the first graded in class activity. Talk to Dr. Vigil-Hayes as soon as possible to catch up on the work, and to be exempted from those activities.
Illness lasting more than 2 weeks – COVID is still a thing, and there are all sorts of other illnesses people can have that affect their ability to attend class. Contact Dr. Vigil-Hayes as soon as possible to discuss potential accommodations and what kind of documentation may be necessary. (If you test positive for COVID or the flu, save your test results - this will be useful if you end up missing more than 2 weeks!)
Grief absences – If you have experienced the death of a family member or someone close to you, or you are experiencing emotional distress from a similar tragedy, you may request a grief absence. To request a grief absence, visit the Grief Absence Request Form found on the Student Information System under Resources –> Grief Absence. See the grief absence policy for more information. Once your grief absence is approved, we will exempt you from the in-class activities for the approved dates. This means those classes won’t count towards your grade at all. However, I do ask that you try to meet with Dr. Vigil-Hayes if the grief absence extends beyond 4 classes because it can be very easy for you to get behind.
Religious holidays – If you wish to be absent from class to observe a religious holiday, please make arrangements in advance - ideally at least two weeks in advances. Absences for religious holidays will be treated as exempt, within reason. See MSU’s religious observance policy for more detail. Note that these count towards your 4 excused absences, but if you need more than 4 excused absences for religious holidays, communicate with Dr. Vigil-Hayes well in advance to figure out a plan.
Student athletes – If you must miss a class to participate in an officially-sanctioned athletic game, you must provide adequate advanced notice beforehand, such as a team schedule or written authorization from a coach or a university administrator. _Note that these count towards your 4 excused absences, but if you need more than 4 excused absences for athletic activities, communicate with Dr. Vigil-Hayes well in advance to figure out a plan.
Required activity – If you must miss a class to participate in a university-sanctioned event, you must provide the instructor with adequate advance notice and written authorization from a university administrator. Note that these count towards your 4 excused absences, but if you need more than 4 excused absences for religious holidays, communicate with Dr. Vigil-Hayes well in advance to figure out a plan.
Other Policies
Accommodations for disabilities
Michigan State University is committed to providing equal opportunity for participation in all programs, services and activities. Requests for accommodations by persons with disabilities may be made by contacting the Resource Center for Persons with Disabilities at 517-884-RCPD or on the web at rcpd.msu.edu. Once your eligibility for an accommodation has been determined, you will be issued a verified individual services accommodation (“VISA”) form. Please present this form to Dr. Vigil-Hayes in the first two weeks of the semester and/or two weeks prior to the accommodation date (test, project, etc). Requests received after this date will be honored whenever possible. _Note that absences related to an accommodation count towards your 4 excused absences, but if you need more than 4 excused absences for an accomodation, communicate with Dr. Vigil-Hayes well in advance to figure out a plan.
Spartan Code of Honor
As a student at MSU, you will be expected to abide by the Spartan Code of Honor Academic Pledge:
“As a Spartan, I will strive to uphold values of the highest ethical standard. I will practice honesty in my work, foster honesty in my peers, and take pride in knowing that honor in ownership is worth more than grades. I will carry these values beyond my time as a student at Michigan State University, continuing the endeavor to build personal integrity in all that I do.”
See the Spartan handbook for more details.
Academic honesty
Michigan State University and the Department of Media and Information both have policies about academic dishonesty. Basically, make sure that everything you turn in with your name on it is your own work, and don’t cheat or lie. If it feels like cheating, it probably is; if you are unsure please ask. Students caught cheating or plagiarizing will receive a 0 for the assignment and be reported to the university. Working together with other students in this class and other classes, however, is encouraged. Make sure that everything you turn in with your name on it is original work of yours.
For classes that involve complex thinking and no right answers like this, we strongly encourage you to work together and ask each other for help. Indeed, this course requires you to work with others. Often when you have a problem or something confuses you, the best place to go for help is your colleagues who are also working on similar things. The Internet is also a fantastic source of information when you are stuck. Use these resources! However, make sure that you personally write and understand all of the work that you turn in. Directly copying text that you don’t understand from the Internet or from others is academically dishonest.
AI Policy
I do not allow AI to be used in this class unless explicitly specified for particular assignments. My reason for this is that the goal of the class is for your brain to learn how to solve problems by applying programming concepts. This includes using AI to “reorganize code”, document code, outline code, or write tests for code.
I will ask that you disable AI assistance for code development. My past experience teaching this class has demonstrated that AI assistance in VS Code can make learning harder for students. For example, students could produce code that did something, but could not really explain why or how it worked, whether or not it actually solved the problem at hand, or how to modify it.
You will have a chance to engage with “vibe coding” (using AI to help write code) as part of a homework assignment for this class.
Mental health
Mental health concerns or stressful events may lead to diminished academic performance or reduce a student’s ability to participate in daily activities. If you’re struggling, we encourage you to seek support. Services are available to assist you with addressing these and other concerns you may be experiencing. You can learn more about the broad range of confidential mental health services available on campus on the Counseling & Psychiatric Services (CAPS) website.
Technical assistance
Asking your peers in class and your instructor is a great source for technical assistance. This is particularly true with the technologies we are learning in class (Python, Git, etc.). For MSU-provided technologies, you can visit the MSU Help site, the Desire2Learn Help Site or email the MSU IT Service Desk.f
Tolerance and civility
MSU strives to build an academic community with living and learning environments that expects tolerance of viewpoints and civility toward others, whether at public forums, athletic events, in residential communities, classrooms or laboratories. We call upon all who participate in university events to promote tolerance and civil behavior and to hold themselves to high standards that reflect the university’s commitment to respect viewpoints that may be different from their own. Only by respecting individuals with diverse perspectives and ideas can we build an environment of civility that is conducive to advancing knowledge and transforming lives.