LIS 875: Technical Foundations of Information Science
Fall 2026
Instructor: Professor Rick Wash
Email: rwash@wisc.edu
Meets: Tuesdays and Thursdays, 11:00am-12:15pm in Morgridge Hall room 2516
Office Hours: TBA
Office: TBA
OR by appointment: https://calendly.com/rwash/office-meeting
Course Assistants:
- Aloukika Shrestha shrestha32@wisc.edu
This course is a synchronous, in-person, 3 credit hour course at the University of Wisconsin–Madison in Fall 2026; all students meet at the same time in a classroom to work together.
Course Description
This course is an graduate level first course in computer programming. The goal of this class is to help students become familiar with how we go about telling computers what to do (programming), and understanding how that process usually works. Students will learn enough that they are able to do some programming on their own, and will also have a much better understanding of how programming works, what kinds of things computers can and can’t do, and how to talk with and interact with professional programmers. All students will be able to learn how to program; this course is not just for students with pre-existing skills or aptitute. Students are able to but not expected to continue on to additional programming courses after this; the material in this course is self-contained and useful even without further courses.
Programming is really just the act of trying to get the computer to do what you want it to do; that is, programming a computer is telling the computer what to do in a way that the computer can understand and accomplish. Despite being “high tech”, computers are surprisingly unsophisticated, and it is important to understand how computers think in order to get them to do what you want. That is the goal of this class – to learn how computers think just enough that you can tell them what to do in a way that works.
Additionally, this course will teach a number of professional skills around programming, and help you become familiar with how programmers do their work. These “soft skills” around programming are just as important, if not more important, to the actual creation of useful new technologies.
Computers are one of the most useful general purpose tools we have, and a large number of jobs involve interacting with computers in interesting and complicated ways. This course is designed for students that will need to use computers, but who don’t just want to be full-time programmers. We will particularly focus on skills that are useful in information jobs. But really, these skills can be applied to an extremely wide variety of programming and non-programming jobs.
About the Instructor
I try to understand how people think about modern technologies and the challenges and difficulties that come with them. That is, I study cybersecurity, with a focus on the ways that human thinking and human behavior affects whether people and their technologies are secure. I have a background and experience varies widely across fields, and includes computer science, psychology, economics, communication, and policy. I use that background to think about complex technologies from multiple perspectives and help make the world a safer place for technology use.
Course Structure and Schedule
This course has a weekly structure. Each week will have a small set of topics and skills that we will be focusing on learning. The goal of this class is to spend most of the class practicing these skills, getting better over time. The weekly topics do build on each other, so it is important to strive to learn the skills each week so they can continue to be applied in future weeks.
Each week is divided into three parts. First, outside of class, you will read readings and/or watch videos, to learn some vocabulary and basic concepts. Second, on Tuesday, we will spend the time in class doing a “lab”: a structured exercise designed to help you build a specific set of skills. Third, on Thursday, the class time will be spent doing a “studio”: a loosely structured, creative activity designed to give you an opportunity to apply the skills you’ve been building to create new and interesting things.
Part 1: Readings / videos
I will post a set of readings / videos. Most will be required; some will be optional. You will need to read and/or watch them, and then write a short summary+question about them. This is a chance to take responsibility for your own learning; be sure to pause/rewind/rewatch things until you feel like you understand them. After reading or watching the videos, you will need to write up a short summary+question, which is intended to help us (the instructor and TAs) understand what makes sense and what is confusing.
Being confused is OK and normal; computers don’t think like people do, and trying to think like a computer is weird and unnatural. Everyone gets confused (I certainly did when I was learning), but everyone gets confused about different things. It is OK to be confused. The goal isn’t to learn these concepts from the readings; instead, you’ll learn them by using them during the in-class programming work. Instead, the goal of these readings is to expose you to the ideas – why these technical things are they way they are – and give you a reference that you can go back to later as you work.
Once done reading, you will be asked to write a summary + question.
Summary: Summarize how you think the core concept of the week works (max 1 paragraph long), and why you think it works that way. Use words like “because” and be sure to include reasons and evidence.
Question: Ask one question about the topics. Questions can be a confusion question; if you get confused, point out where you were confused (timestamp for video or section of text) and write down your question. OR, the question can be a curiosity; if you were inspired and curious about something and want to learn more, write that question down. OR, the question can be a connection; it can take one of the concepts from week and apply it to some other aspect of your life or work.
Part 2: Lab (Tuesday)
Every Tuesday, we will do a lab exercise. Labs are structured exercises where you work through a small series of problems, trying to get things working.
In lab, you will always be pair programming. You will be assigned into pair, and will have to work as a pair. Pair programming follows the mantra “2 people, 1 computer”. While pair programming, only one computer should be actively used for programing. The other person’s computer (and phone and tablet) shouldn’t be touched. The two people must work together to solve the problem. After completing each problem, then the two must switch roles; whoever was at the keyboard becomes the assistant, and whoever was assisting moves to the keyboard.
Labs will be graded based on effort (did you work on the lab for the entire class?), on teamwork (did you help others?), on attendance (did you attend the whole lab?), and on completion (did you complete all of the exercises?) – in that order of importance. (Notice: the grade does not depend on how well you do the exercises. Getting it working is important; doing it quickly or efficiently is not.) If you do not finish the lab during class, you can complete it any time before the start of the next class period.
Part 3: Studio (Thursday)
Every Thursday, we will do a studio exercise. Studios are less structured exercises where you are given a realistic problem or creative goal, and you must try to figure out a way to solve it. There is no right answer to studios; instead, this is an opportunity for you to be creative and use the skills you are developing to get computers to do interesting things.
You are required to work in teams in studio. Teams must be at least two people, and no more than 4 people can be in a team. Which team you are on is up to you. While working on the studio, you are strongly encouraged to work in pair programming; I find that teams actually get more done when pair programming than when everyone works separately.
Studios are graded primarily on attendance, support, and teamwork; since there is no right or wrong answer to studio exercises we are not grading whether you accomplish them or not. Studios are open ended tasks; there is no place that signifies when you are “done”. Students are expected to spend the entire class period working on the studio, and hopefully will get something working. If you do not get something working in the studio, I encourage you to keep working on it outside of class. We will give you until the end of the week (Friday) to continue working outside of class.
Assignments and Grading
Each week, students will receive a total of 3 grades: one grade for the summary+question from the readings, one grade for the work during the lab, and a grade for participating in the studio.
The question+summary will not be graded; it will just be checked off. If you complete the the assignment by summarizing the ideas and asking a reasonable question, you will earn a check. If the assignment isn’t turned in or if it is missing either the summary or question, then you will receive a zero for it. Question+summary assignments are due on Tuesday before class, and can be submitted on Canvas. Unexcused late question+summaries will not be accepted.
All students who attend and participate in the entire studio, and get something reasonable working will earn a check for the studio. Students who are effective at helping others, are particularly engaged in the studio, or whose programs are particularly creative may receive a check plus for the studio; all students should be able to earn a check plus for studio if they try. Students who leave early or who work on other work during studio will receive a check minus for the studio. Students who do not attend studio or do not participate at all will receive a zero.
A check earns nine out of possible 10 points. A check plus earns the full 10 points. A check minus earns 7 points.
Labs will also be graded using a check / check plus / check minus. Students must attend labs on time and complete all of the main exercises to be eligible for a check or a check plus. In order to leave the lab early, you must complete all of the exercises, and also at least one or two of the optional challenges in the lab (and also check with the professor). Please turn in screenshots of your working lab (via canvas) and check your code into GitLab and share the project with the professor and TAs (after week 2) to receive full credit. Labs are due before the next scheduled class period.
Labs and studios are a form of practice; they give you an opportunity to practice using your knowledge and skills to build something interesting and work with others. Practice is never perfect, and the goal is not to make each practice perfect. But showing up and doing the practice is important; you can’t learn if you don’t practice.
You will not be permitted to get credit for making up missed work. As a class, we will be working together, learning from each other and helping each other figure out how to program; as such, making up work outside of class misses this benefit. However, each week of the class builds on prior weeks, so if you miss some of the work, you may find it valuable to do it on your own time (without the coaching and peer feedback that occurs during class). If you know ahead-of-time that you will miss class, please contact the instructor.
You will not be permitted to re-do work for credit, or turn in work late. Practice happens at the scheduled time, and doing it again (without the coaching and peer feedback) isn’t the same. That said, you are welcome to practice on your own time by doing or redoing the work; you will not receive any credit for it, though.
You will be allowed to drop the lowest two scores for labs or studios during the semester, and also drop one summary+question scores. This effectively allows you miss the equivalent of one week of class without penalty. You don’t need permission or to explain why you are dropping the assignment; it is OK if things come up in your life (busy week, stressful week, sick, etc.) and you need to drop an assignment to help you through it. If you have circumstances that require you to miss or underperform for more than these dropped assignments, then talk to the instructor (preferably ahead of time) and we can try to work out something. Excused absences will only apply after dropping these lowest scores.
Use of Large Language Models (aka AI) is prohibited for the summary+question. The whole point of this is to load ideas into your head; using an LLM bypasses that. Any use of an LLM for the summary+question assignments will result in a grade of 0 and a report to the university of an academic integrity violation.
50% of the final grade be based on the labs/studios. 10% will be based on the summary+questions. And the final 40% is the final project.
Final Project
During the last week of the semester, we will be doing a week-long studio. This studio will be an interesting exercise where you will work in a group and use all of the skills you built during the semester to make a creative, interactive computer program. The work that occurs during this last week will be graded as normal for studios (attendance-based, check/check plus/check minus).
The program you write during this final studio will also be turned in and graded as a final project for the course. We will evaluate how well you were able to use ideas and skills from the course to create something new and interesting. This final project will be turned in via GitLab (you will learn how to do this in class), and will be due at the normally scheduled finals period. You are welcome to turn in what you have at the end of the last class, or to continue working on it after classes are over; its up to you. The grade for this final project will be 40% of your final grade.
The final project will be due on the first day of the scheduled final exam period. However, normally, most of the work on this project will be done during class during the final week of the semester.
There are no exams in ths course.
Grade Recording Policy
In general, grades will be officially recorded in Canvas. In all cases, the gradebook in Canvas will record the grade as it is earned. For example, if you miss a class, the gradebook will record a 0 for that class. Canvas will automatically drop the two lowest grades of the semester, and will indicate which grades have been dropped.
I will not change the officially earned grade as recorded in Canvas for any reason, but I can grant excuses (ignoring a grade) or adjustments. I only consider granting excuses near the end of the semester, based on whole-of-the-semester considerations. For example, if you had a serious personal issue that causes you to miss more than the 2 allowed drops, I can grant additional excused classes. However, I have found that most issues (illness, job interviews, etc.) are handled well by the 2 allowed drops and only consider additional excuses in exceptional circumstances.
I will consider grade change requests if I record a grade incorrectly. For example, everyone once in a while a grade gets recorded for the wrong person, and I am happy to correct that. I will not consider grade change requests related to deductions for arriving late, leaving early, or missing class (even with good reason); those are handled by the above policy of dropping the lowest 2 grades and discussing whole-of-semester considerations at the end of the semester. However, it is OK to email me at the time of the class to document the reason for arriving late, leaving early, or missing class.
Readings
This class does not have a textbook. However, required readings and videos will be posted to the schedule on this website.
You should do the readings before the class meeting under which those readings are listed in the schedule of readings – that is the day on which the material will be used in class.
Attendance
In this class, we work together to learn more about programming. Almost all of the time in class is spent working in pairs or teams trying to learn how to get the computer to do what we want it to do. Because we learn in teams, it is important to attend all classes; you can’t learn from your teammates if you aren’t present, and they can’t learn from you. Also, it is similarly important to arrive on time, spend the class time working with your team, and remain for the full class period. Your teammates will appreciate your help, and you will learn best if you spend the time practicing.
If you find yourself having difficulty spending the entire class period working on programming, please talk to the instructor about it. This could be because you find the tasks boring, because you don’t get along with teammates, or because other things in your life are intruding on class; regardless, talk to the instructor and he will work with you to find a productive way forward.
If you arrive late, leave early, or spend a non-trivial amount of time during class on non-class activities, your grade for that class period may be reduced. If there is a reason that you will regularly need to arrive late or leave early, please come and talk to the instructor about it; since most of the work in class is done in pairs or teams, this will make it difficult for your teammates, and I want to be fair to everyone.
Absences
Emergencies and other unexpected issues do unfortunately happen. In addition, students may be facing additional challenges due to the pandemic. The “droped grades” structure for in-class activities is designed to offer flexibility to accommodate unexpected absences. In the event of an unexpected absence, students are responsible for obtaining information about what they missed from others taking the course.
If you wish to be absent from class to observe a religious holiday, please make arrangements in advance. If you must miss a class to participate in an officially-sanctioned athletic game or in a required activity for another course, you must provide adequate advanced notice beforehand, such as a team schedule or written authorization from the faculty member of the other course or a university administrator. If something else comes up and you need special considerations, please contact Dr. Wash to discuss alternative options.
Signing in
We will use a physical sign-in sheet to record attendance. Please show up on time in class to ensure that you can sign in. If you arrive late, come see the instructor. Signing the sheet attests that you are currently in attendance; do not sign anyone else’s name. Signing in for someone not currently in attendance is academic misconduct and a violation of academic integrity..
Technology
You are required to bring a computer to class, and will be required to install appropriate programming tools on the computer. You are required to use your own technology to complete assignments. If you do not have an appropriate laptop computer or if your computer is not able to run the needed software, please talk to the instructor about it. We will be learning how to use Python and Git, though you will install and learn them during class.
You will be working in pairs and teams, and in particular in lab you will be doing pair programming, which involves two people using one computer. You do NOT have to allow other people to use your computer; it is perfectly OK to ask your partner to use their computer when they are driving. However, you still must do pair programming, which involves one person driving, or controlling the computer, while the other person looks at the screen from beside them and provides input and help. This means that other people will be looking at your screen; I suggest closing or minimizing other windows and/or temporarily disabling notifications to protect your privacy while you work.
In general, I expect that all technology will be primarily used for class purposes. However, not everyone will be able to achieve that goal. It is OK to occasionally use your computers for non-class purposes. However, if that technology becomes distracting to others I reserve the right to ask you to stop what you are doing or ask you to leave class while you complete what you are doing.
Course Communication
All messages and announcements will be posted on Canvas; some announcements will also be sent via email to the email accounts of students registered in the class. You are expected to be familiar with all information posted on Canvas, so please check Canvas frequently and ensure that notifications are turned on so you are made aware of any posted announcements. You are also responsible for being aware of announcements made in class.
Generative AI
Generative AI tools (ChatGPT, Copilot, etc.), as well as other outside programming resources (Google, StackOverflow, autocomplete), are a common and important part of everyday programming for almost all programmers today. It is important to learn how to use and work with generative AI tools while programming. However, relying on generative AI can easily interfere with learning. In a classroom, there has to be a balance – too much generative AI use and students don’t learn effectively; too little generative AI use and students don’t learn how to do modern programming. We will frequently discuss the use of generative AI as we talk about programming skills and how programmers work in class.
For this class, we have the following policies intended to support learning:
- The use of generative AI (ChatGPT, Copilot, etc.) for the summary+question is strictly prohibited. Using generative AI tool for the summary+question will lead to a 0 score and a report for a violation of academic integrity.
- You are not allowed to use generative AI for the first ten weeks or so of the course. However, during one or two weeks near the end of the course, we will explicitly learn more about how programmers are using AI to assist in programming, and you will be both allowed and required to use generative AI tools from that point on.
- All code you produce and turn in must be code that 1) you produced, understand, and can stand behind; 2) that was obtained legally and ethically; and 3) that you take responsibility for.
Do not ask generative AI tools to do your whole assignment and then turn in what it produces; that violates academic integrity and interferes with learning. Instead, we will try to find ways to work with generative AI to produce better assignments. Think about it as a useful tool rather than a replacement for work. In particular, remember that generative AI is not good at creativity and problem solving; but it can help you execute on your ideas. I also encourage you to reflect on your use of these tools and discuss their use with your peers and the instructors.
Policies and Procedures
Announcements: I will occasionally post announcements about this course. Announcements may be posted both to this website and to Canvas. Everyone is expected to pay attention and be familiar with these announcements.
Assignments: Assignments will be submitted online, either via Canvas or via GitLab. Late assignments will not be accepted. Of course, if negotiated in advance, reasonable exceptions may be granted by the professor.
Academic Integrity: By virtue of enrollment, each student agrees to uphold the high academic standards of the University of Wisconsin-Madison; academic misconduct is behavior that negatively impacts the integrity of the institution. Cheating, fabrication, plagiarism, unauthorized collaboration, and helping others commit these previously listed acts are examples of misconduct which may result in disciplinary action. Examples of disciplinary sanctions include, but are not limited to, failure on the assignment/course, written reprimand, disciplinary probation, suspension, or expulsion.
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. 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, I 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 a confusion, the best place to go for help is your colleagues who are also working on similar issues. Also, the Internet is a fantastic source of information when you are stuck. Use these resources copiously. 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, ChatGPT, or from others is academically dishonest.
Accommodations for Disabilities: The University of Wisconsin-Madison supports the right of all enrolled students to a full and equal educational opportunity. The Americans with Disabilities Act (ADA), Wisconsin State Statute (36.12), and UW-Madison policy (UW-855) require the university to provide reasonable accommodations to students with disabilities to access and participate in its academic programs and educational services. Faculty and students share responsibility in the accommodation process. Students are expected to inform faculty of their need for instructional accommodations during the beginning of the semester, or as soon as possible after being approved for accommodations. Faculty will work either directly with the student or in coordination with the McBurney Center to provide reasonable instructional and course-related accommodations. Disability information, including instructional accommodations as part of a student’s educational record, is confidential and protected under FERPA.
Credit Hours: This class meets for two, 75-minute class periods each week over the fall semester and carries the expectation that students will work on course learning activities (reading, writing, problem sets, studying, etc) for about 3 hours out of the classroom for every class period. The syllabus includes more information about meeting times and expectations for student work.
Lecture Materials: Lecture materials and recordings for this course are protected intellectual property at UW-Madison. Students in courses may use the materials and recordings for their personal use related to participation in class. Students may also take notes solely for their personal use. If a lecture is not already recorded, students are not authorized to record lectures without permission unless they are considered by the university to be a qualified student with a disability who has an approved accommodation that includes recording. [Regent Policy Document 4-1] Students may not copy or have lecture materials and recordings outside of class, including posting on internet sites or selling to commercial entities, with the exception of sharing copies of personal notes as a notetaker through the McBurney Disability Resource Center. Students are otherwise prohibited from providing or selling their personal notes to anyone else or being paid for taking notes by any person or commercial firm without the instructor’s express written permission. Unauthorized use of these copyrighted lecture materials and recordings constitutes copyright infringement and may be addressed under the university’s policies, UWS Chapters 14 and 17, governing student academic and non-academic misconduct.
Religious Holidays: Students are responsible for notifying instructors within the first two weeks of classes about any need for flexibility due to religious observances. You may make up course work missed to observe a major religious holiday only if you make arrangements in advance with the instructor. Absences due to religious holidays, when communicated in advance, will not count as one of the dropped scores.
Required Activity: To make up course work missed to participate in a university-sanctioned event, you must provide the instructor with adequate advance notice and written authorization from a university administrator.