The instructor reserves the right to make changes to the syllabus and schedule over the course of the semester. You will be notified of any changes.

Computer Science Pragmatics

FA 2023

This is a 1-credit hour seminar designed to teach students the essentials of using a computer effectively for EECS students. While the target audience is EE/CE/CS/DS students, any student wishing to learn how to use their computer more effectively is encouraged to join. Students are expected to be familiar with basic concepts of programming, such as control flow (e.g. if-else, loops, functions) and expressing their ideas in program statements. Topics covered include Unix-like systems, shells, version control, build systems, debugging, and scripting. The ultimate goal of the class is to give students hands on experience with the prevailing tools of the trade as well cultivate research skills for picking up new tools in an ever-evolving computing landscape.


  • ENGR 101 , ENGR 151 , EECS 180 , EECS 183 , EECS 280 (co-enroll) , or EECS 281 (co-enroll)

Course Resources


Section 001 (25565)

Fri 10:30 am - 12:00 pm

🏫220 CHRYS

💻Remote (Zoom)

🧑‍🏫Brandon Nguyen



Brandon Nguyen

Office Hours:

Tuesday 1:00 to 4:00 PM, BBB 4th floor lounge

Wednesday 1:00 to 4:00 PM, BBB 4th floor lounge

By appointment via email, remote via Zoom


Roland Daynauth

Course Structure

This course is designed with several objectives in mind:

This class is run as a “flipped classroom”, where the bulk of information transfer happens at home or on your own time via videos made by yours truly and in-person class time is used as a more interactive environment for questions and answers, hands on activities, and time to complete your assignments while having direct access to the course staff. This approach was taken as a means to optimize means of instructor contact: videos allow the instructor to provide you more tightly edited content to condense the amount of time needed to convey information and frees up more in-person time for interactions with the instructional staff that aren’t dry information.

In-person classes will be held in person and remotely accessible live via the Zoom teleconferencing software, and will be recorded. Attendance will not be mandatory. If you intend to attend the live lecture over Zoom, please log in using your UMich email as attendance is restricted to the UMich domain.

To facilitate the goals of the class, there will be two assessment types: “Basic” and “Advanced”. Basic assessments are in the form of weekly assignments designed to guide and ease students into picking up a new tool or method. Advanced assessments come in two options: weekly assignments or a project, referred to as “advanced assignments” and “advanced projects”, respectively. These assessments are designed for students to practice researching additional information and apply it towards solving problems that may very well crop up in real computing systems. The weekly advanced assignments are structured similarly to the weekly basic assignments except with less guidance. Each advanced project revolves around a certain theme and is composed of multiple open-ended components. The weekly advanced assignments will be submitted online whereas projects will have to be checked out with one of the instructional staff.

Each week a set of videos will be released about the week’s topic along with the associated Basic and Advanced assignments. The Basic assignment will usually be the topic of a given week’s in-person class and time will be reserved for you to work on either assignment with the opportunity to ask the instructor for help.

Basic assignments that will contribute points to the Basic category. The Advanced category can be fulfilled in two ways: choosing 1 course project or completing several of the weekly advanced assignments. Not all assignments will have to be completed: the grading section will have details on how you can organize your efforts.

Work and Grading

This course utilizes a point-accumulation method whose point sums map to a typical grading scale. That means that there is no averaging of grades: to make the letter grade you want, you simply have to accumulate enough points for it by completing assignments. There are multiple categories of points, and the “adjusted” sum of each category’s points is used to determine your final letter grade. Each category may have certain rules on how many points you can earn from them, hence the quoted “adjusted”. This will be elaborated in the following sections.

Final Letter Grades

If you are unfamiliar with interval notation, ‘[’ / ‘]’ include a number and ‘(‘ / ‘)’ exclude a number. “[90, 93)” means the range of numbers between 90 and 93, including 90 but excluding 93.

Basic (60 points)

Each basic assignment will be worth 6 points in total. Every additional point you earn past 60 points is worth 50%. This means that if you do 12 basic assignments, the number of points you get from the Basic category will be 60 + (12 * 0.5) = 66. Nominally, this means you only have to get full credit on 10 basic assignments to hit the 60 point total. This serves as a built-in buffer for missing/not doing assignments, as there are more than 10 basic assignments in the class. That being said, it is expected that you do each basic assignment as a means to familiarize yourself with a topic.

The goal of these assignments is to reinforce concepts introduced in lecture and to give hands-on experience. To emphasize this, your assignment scores will be converted the following way for final grade calculation: what number we report to you will be the raw score. On the left is the raw score and on the right is the adjusted final score.

This allows you to get full credit while allowing the staff to point out mistakes.

Some assignments will be submitted over the EECS GitLab server ( and some assignments will be submitted over Gradescope. Assignments submitted via GitLab will have a “soft” deadline, where submissions can continue to be made after the deadline. On-time submissions will be given extra credit, with submissions making at least 6 points gaining 1 point and submissions scoring between 4 and 6 gaining 0.5 points. Assignments submitted via Gradescope will have “hard” deadlines, after which submissions will not be accepted.

Advanced (40 points)

There are two possible ways to approach the Advanced category. Each weekly advanced assignment is worth 10 points in total, which means you only have to do 4 to meet the category total. Alternatively, you can complete 1 project for 40 points. Projects can be completed for partial credit, though only one project can be used for project credit.

Similarly to the Basic category, all points past the category total of 40 points will be worth 50%. For example, if you do every single advanced assignment and get full credit, you will earn 12 * 10 = 120 raw points. The 80 points after the initial 40 points will be worth half: therefore your final Advanced score would be 40 + (80 * 0.5) = 40 + 40 = 80. (If you decide to do all advanced assignments and the project, that’s 120 + 40 = 160 raw points, resulting in 40 + (120 * 0.5) = 40 + 60 = 100 Advanced points, netting you a 100 in the class without having to do any basic assignments 😀).

Some assignments will be submitted over the EECS GitLab server ( and some assignments will be submitted over Gradescope. Assignments submitted via GitLab will have a “soft” deadline, where submissions can continue to be made after the deadline. On-time submissions will be given extra credit, with submissions making at least 10 points gaining 1 point and submissions scoring between 7 and 10 gaining 0.5 points. Assignments submitted via Gradescope will have “hard” deadlines, after which submissions will not be accepted.

Late projects will not be accepted. If you are unable to completely finish a project by its due date, consider checking it out for partial credit. Be sure to leave time to attend an office hour or schedule a meeting with the instructional staff.


Attendance during the in-person class is not required for this course. However, there may be activities in which you can get participation points for. I may open up a survey to ask you about what you learned or got out of a class (recording), giving you 1 point for each survey.

In addition, there may be quizzes for the lecture videos. Each quiz is worth 1 point.

Both the surveys and quizzes will be time sensitive to encourage you to keep up with them in a timely manner. Surveys will have a hard cut-off date after which they will no longer accept submissions, and quizzes can be submitted after the due date for half credit.

There is no soft point cap for this category: each point will be worth its full amount. This category effectively serves as extra credit for your participation, and can help get you out of other work :)


Your final score is based off of sums of the final “adjusted” point totals of each category, having taken into account the points past the category total being worth 50% for Basic and Advanced. This allows for multiple ways to get an A or A+ in the class. You can do 10 basic assignments and 4 advanced assignments or you could do 10 basic assignments and an advanced project. You could slack off on some basic assignments and make up for it with more advanced assignments. You could also do some advanced assignments while partially completing a project. This grading scheme is set up to allow for flexibility dealing with the workloads in whatever classes you are taking. Keeping up with the class by watching videos and doing the quizzes will only improve your grade by adding unweighted points to the total.

tl;dr You add up the point values you earn for each assignment, taking into account how points are worth half once the sum for a category has been reached, and your final total determines your letter grade.


Work in this class is intended to be done alone: your code should be your own. That being said, you can help point each other towards information or help explain concepts to each other.

You should have a computer that runs Windows, macOS, or Linux that you can install software on. Chromebooks are welcome if they have have the ability to setup a Linux environemnt (Crostini).

Tips for success

While the class is very flexible, it’s still on you to keep up and not get left behind. You are encouraged to keep up with the weekly videos, do the quizzes for extra points, and come to class to complete the week’s basic assignment. The quizzes will add up in the end, allowing you to skip out on some assignments.


There will be multiple ways that communication can occur in the class: