CMSC398W: Practical Tools for Efficient Development
Course Description
This course will provide a broad overview of many common and useful tools, like the command line, Git, debuggers, build systems, and more. Through a hands-on approach, you will be introduced to a variety of tools and techniques that can immediately be applied to everyday problems. We aim to provide students with material that improves their computing ecosystem literacy and increases their efficiency as a developer.
Course Details
- Course: Practical Tools For Efficient Development
- Prerequisites: Minimum grade of C- in CMSC216 and CM250
- Credits: 1
- Seats: 30
- Lecture Time: Friday 11:00 AM - 11:50 AM
- Location: IRB 2207
- Semester: Spring 2026
- Course Facilitator(s): Mohammad Durrani
- Faculty Advisor: Prof. Christopher Kauffman
Course Schedule
This is subject to change.
| Date | Concept | Assignment |
|---|---|---|
| 01/30/2026 | The Shell | System Monitoring Project Released |
| 02/06/2026 | Shell Tools and Scripting | |
| 02/13/2026 | Data Wrangling / Command-line Environment | |
| 02/20/2026 | Shell "Application Day" | |
| 02/27/2026 | Debugging and Profiling | System Monitoring Project Due, Release Pacman Part 1 |
| 03/06/2026 | Version Control (Git) | |
| 03/13/2026 | Version Control (Git) | |
| 03/20/2026 | Spring Break | |
| 03/27/2026 | Build Systems / CI | PacMan Project Part 1 Due, release part 2 |
| 04/03/2026 | Git "Application Day" | |
| 04/10/2026 | Docker | |
| 04/17/2026 | Networking | Part 2 due, Networking Project Released |
| 04/24/2026 | Docker/Networking Application Day | |
| 05/01/2026 | ML/AI Tools | |
| 05/08/2026 | Flex | Networking Project Due |
Grading
Grades will be maintained on ELMS. You will be responsible for all material discussed in lecture as well as other standard means of communication (Piazza, email announcements, etc.), including but not limited to deadlines, policies, assignment changes, etc.
Any request for reconsideration of any grading on coursework must be submitted within one week of when it is returned. No requests will be considered afterwards.
Participation grades will be determined by the tracking of participation in class.
Your final course grade will be determined according to the following percentages:
| Percentage | Title | Description |
|---|---|---|
| 80% | Projects | 4 major projects |
| 15% | Application Days | Completion of Application Days assignments. |
| 5% | Participation | Participation in class. |
Late Policy
There will be a standard 10% late policy per 24-hour period late for any projects submitted past the deadline. This means a project due at 11:59 PM the day before that gets submitted at 12:02 AM the next day will get a standard 10% penalty automatically applied. No late submissions will be accepted for the last project (to ensure that there is enough time to submit grades).
Communicating with course staff
Communication should be done over Piazza, with preferably public posts unless a private post is necessary (grading disputes, student-specifc questions, etc). Communication should primarily be done with the course facilitators (Mohammad and Karan).
-
Lecturers / Instructors:
- Mohammad Durrani: durranim@terpmail.umd.edu
-
Advisor:
- Prof. Kauffman: profk@umd.edu
Excused Absence and Academic Accommodations
See the section titled "Attendance, Absences, or Missed Assignments" available at Course Related Policies.
Disability Support Accommodations
See the section titled "Accessibility" available at Course Related Policies.
Academic Integrity
Note that academic dishonesty includes not only cheating, fabrication, and plagiarism, but also includes helping other students commit acts of academic dishonesty by allowing them to obtain copies of your work. In short, all submitted work must be your own. Cases of academic dishonesty will be pursued to the fullest extent possible as stipulated by the Office of Student Conduct. It is very important for you to be aware of the consequences of cheating, fabrication, facilitation, and plagiarism. For more information on the Code of Academic Integrity or the Student Honor Council, please visit http://www.shc.umd.edu.
AI / LLM Policy
The ultimate goal of this course is that you learn a wide breadth of tools that help you become a more efficient developer. Large Language Models (LLMs) are likely one of the tools you will have access to in your development, so reasonably, you should be able to use it in this class. However, like everything else in this course, this is a tool for you to use and not something that should be completely replacing your learning. Thus, our policy is that you are allowed to use LLMs to clarify your understanding, ask questions, etc. (think of it as a tutor) but any and all submitted work must be your own. Any violation of this policy will be escalated as per the standard University procedures.
Course Evaluations
If you have a suggestion for improving this class, don't hesitate to tell the instructors at any point during the semester. At the end of the semester, please don't forget to provide your feedback using the campus-wide CourseEvalUM system. Your comments will help make this class better.
Citation
This course pulls material heavily from "The Missing Semester of Your CS Education" from MIT and Anish Athalye, Jon Gjengset, Jose Javier Ortiz. The materials follow the license as specified by CC BY-NC-SA, as detailed here.