Teaching

Systems programming is hard. It is much more exacting than application programming and bugs can be very difficult to track down. I believe in a building block approach using iterative development and design by interface. Start small then expand to add new functionality. Organize your code so that reuse is relatively easy.

To me, knowing how systems fail and knowing how to debug failures is crucial. Concurrency makes development harder but not impossible. Part of my goal in systems courses is to help students to learn skills and approaches that will serve them well in industry.

Awards

2019 MCECS Wedge Award: Excellence in Teaching

"The David E. Wedge Awards for Excellence Committee is pleased to inform you that you have been selected for the 2019 Excellence in Teaching Award for Computer Science. You were selected for this award by students in your department because you have demonstrated excellence in engineering education, a strong interest in the development of students, and effective and innovative practices in the classroom. We are so proud of your positive impact on our students and the influence that has on our college as a whole. Thank you for your commitment to bring excellence to MCECS. "

Course Reviews

Click on course title to display reviews

Term Comments

Spring 2019

"Great class! Learned a lot."

"His lectures are fun and directly apply to HW. He skips a lot of his power point slides so missing class will leave you confused on what to study. He is known for reusing old exams (which he lets you use to study, along with many other resources). Many new and challenging topics, but the class is an easy A if you put the time in."

Winter 2019

"Great class, I think it's a great way for people decide if they want to pursue Coding or not and get familiar with different types of programs"

"This course was very helpful to me since I have very little math experience, and no prior programming experience. It was a really great starting point for me in CS at PSU."

"Thanks for a great class."

Fall 2018

"Mark is extremely knowledge. Cool to learn from someone who's been working in computer science for a while. I really enjoyed learning systems programming with Mark."

"One of the finest instructors I have ever had. Genuinely cares about the success of his students."

"I learned tons of new information from this class and is one of my favorite CS classes I have taken so far. Also Mark was an excellent professor and I hope to have take more classes he teaches."

Term Comments

Spring 2020 (COVID)

"The OSTEP book was honestly wonderful to read; much better than most textbooks I've experienced, and not needing to pay for it was also great. This class was very difficult for the first 3-4 weeks, but was extremely rewarding; it's my favorite CS class (or any college class actually) so far. The teacher/TAs being available every weekend was also extremely helpful, especially on weekends when the projects were due. The instructions for the projects were also very helpful and descriptive, there were a lot of helpful resources made available, and the teacher tried very hard (successfully) to make an environment where people could really ask questions without feeling like they were being ridiculed. Overall, an A+ class. Something that would've been helpful for me at the beginning of the term is a handout (maybe part of the survival guide?) that gives an outline of all the important files (especially the ones that are edited often throughout the term) and what their role in the OS is and if they're a user-side program or kernel-side program. It becomes obvious later whether a program is user-side or kernel-side, but it took me a little while to figure out which files are important for this class. Also, the online format was actually really good for me. I would love to take more classes like this in the future, even when quarantine is lifted. Being able to watch and listen to recordings of every lecture was essential for me, and not needing to commute saved me several hours every week. Please consider making this format a regular thing in the future."

"This was an excellent class. I feel like I really learned a lot from both the lectures and assignments. Mark conveys the material in an understandable way and he was able to keep the his regular high quality of lectures as we went online."

"I've been honestly shocked at how good this course is. Every aspect of this class is consistent. Same language throughout: lectures, lecture notes, manual, textbook, homework assignment, quizzes Clear expectations at every step of the way Plenty of help from TAs with assignments or questions Very adaptable to requests. I mentioned a lack of visual aids in lectures and he made an effort to include them going forward for the rest of the term without a single reminder or addtl request Very quick grading on quizzes and homework which needed very little revision Asks a lot of questions in-class. Does his best to keep students engaged in the material."

Winter 2020

"You and your staff made a class that I had heard horror stories about, and thus was dreading, into the greatest class experience I've had so far in my experience at Portland State."

Spring 2019

"Mark is a treasure! I'm so glad I had to opportunity to learn from someone who pushed me to become a better computer scientist. He's sharp as a tack."

"Professor Morrissey is one of the best ever professors ever to teach me in my entire academic career. The CS333 class is not an easy class, but professor Morrissey made learning it as enjoyable as possible, and he provided the necessary resources to help the students learn the materials and practice. He was very approachable in office hours, and his TAs were very knowledgeable and approachable as well. I would definitely take another course with professor Morrissey in the future."

"Mark Morrissey's Operating Systems is a great class. It was challenging, informative, and at the same time supportive and approachable. Exactly what I'm looking for in my CS education. Great use of my tuition, thank you."

"Mark prepared us well for exams and was extremely helpful in answering questions via class time, email, and slack. One of, of not the most knowledgeable teachers I've learned from and I enjoyed his perspective and his sharing of experience in CS as well as intertwined humor. Challenging course and material but made doable by him and great TA's. Great teacher overall."

"Definitely one of my favorite CS classes. I wish this was a 2 term class with progressively more difficult projects. Mark M. was an amazing instructor, knew the material in and out, and used NUMEROUS diagrams, analogies, and similes to help visualize complex information. That helped me the most to understand how all of this information ties together."

"Best Professors I've had the chance to work with. The class is hard but he was able to explain everything and break it down so we can fully grasp the material. Programming assignments are hard, and will probably take the entire time assigned for them, so my recommendation is that you start early. Reading and attendance are a must."

"Mark is a really great teacher. He's been teaching CS333 for a long time, and the curriculum is laid out very clearly so that you know exactly what's expected of you. His lectures are super interesting, and he and his TA are speedy about responding to emails. This is a time-intensive course though so be prepared. Reading and attendance are a must."

"Systems topics are hard. Prof. Morrissey not only helped us to appreciate this but also helped us to survive. I am not a systems person, but have an appreciations for those who are. Lots of programming, but not too hard if you pay attention to the lecture"

"I have had Professor Morrissey for both CS311 and CS333. There is no doubt that he provides challenging material and you will work hard. But, in my estimation, he is the most knowledgable CS professor at PSU. He's also very accessible, for both office hours and email. He's also very friendly and infuses lectures with humor."

Winter 2019

"While the subject of the class is very difficult and time-consuming, the instructor does a very good job trying to explain it with the short amount of time in this class. He tries to make himself and the other TAs as available as possible to answer questions outside of class. The projects and exams were fair in grading but ideally a solution to the practice midterm and final would be nice."

"This course was difficult but fair. The amount of time that had to be dedicated might not be equitable but I did get value out of the assignments. The large amount of exam study material provided was excellent. Just by studying the provided exam practice I learned the most in this class. instructor knows his stuff and is a passionate lecturer."

"Mark Morrissey is a fantastic professor who provides his students with every tool and resource they need to succeed. In short: > Easily one of the best professors I've had in my entire college career > Motivated me to learn and encouraged use of the material. > Provided all of the resources needed to succeed. > Flexible, I always felt that if I needed help I could easily get in contact and would often stay after lecture to help. > Programming assignments were challenging but the material and resources provided made them very doable. > It's refreshing that Mark Morrissey cares about the subject and his students. His enthusiasm for the material and his command of the subject made for a wonderful experience. Personal Recommendations: > "Slack" channel was incredibly helpful, I hope it recurs > Some metric (or warning) to show that our attendance is being caught. I have attended each lecture, but scanners made me slightly nervous if it didn't catch my card properly. > Didn't use the weekend labs, but having the option to was appreciated."

"Mark is a MASTER of Operating Systems. This was by far the hardest CS course I've taken so far, but I never felt that the expectations were unfair. Mark and the TAs provide an immense amount of help, and every student is provided more than enough opportunity to get help on the assignments. I also have to say that Jeramiah and the lab TAs are amazing! I cannot stress enough how helpful they were when I got stuck on the assignments. The Slack channel for the class was also incredibly helpful, and it allowed students to help each other debug and think through algorithms. Mark is a very talented lecturer, and his lecture notes/materials are clear, concise, and very well written. This class was a big challenge, but very rewarding, and I've learned more in this class than probably any other class I've taken."

"Mark is a great instructor. He really cares a lot about the subject and it shows in his lectures. I thought the assignments were challenging (in a good way) and, for the most part, the instructions to complete them were straight-forward. Mark is always happy to answer student's questions."
Term Comments

Summer 2019

Overall I think that this course was extremely beneficial to me. I had not previously been exposed to any systems-level programming beyond what I learned in CS201 and CS333 and so many of the topics we covered in the course I had not had a chance to dive into quite yet. Even though we plowed through a significant number of topics in a condensed summer term, I actually felt that we covered everything in enough depth to be able to put new concepts to use without feeling that we were rushing anything. The book was certainly dense and our readings were substantial, but I found that the links that were posted on the course website were the most interesting and often helpful. As we progressed in the course I became more accustomed to the style of reading APUE and how I should approach the topics from several angles, combining the book readings with man pages and online resources in order to understand how these topics are implemented in real applications.

Overall I really enjoyed the class. I got everything I thought I would get out of it and more. Here are the two main takeaways I got from it:
Re-enforcing my understanding of fundamental topics. That meant deepening my understanding of topics I've learned about before, but don't fully understand. These include things like buffered vs unbuffered IO, and is asynchronous just another name for non-blocking IO or are they different? These aren't concepts specific to systems programming which makes them especially useful to understand.
You talked a lot about our "toolbox" throughout the term. The biggest thing I added to my toolbox was knowledge of what system calls and C library functions are out there. This knowledge helps to reduce the number of problems that make me say "Oh I have no idea how to solve this". Instead I suspect that I'll see problems and know exactly how to solve them -- "Oh I could use x to solve this" or "I know why this is happening. It's due to you".

In the end, you can't argue with results and the results are I learned gobs about systems programming while improving as a programmer. Sure, sometimes the workload was a pretty heavy but I can't imagine getting from the class what I got, which was a ton, without having to put my head down, read a bunch, and pump out some code. I think the large workload and some of the assignments being just beyond my working knowledge also taught me more than the concepts directly related to systems programming. I learned to navigate man pages and sift through the information in them to find what I need (and throw away the rest). While I have obviously used the internet before, my ability to search for answers to my problems via Stack Overflow, Quora, etc. has been greatly improved. I just wish I wasn't so worried about asking a stupid question on Stack Overflow and embarrasing myself in front of my peers. This class was stressful, hard, demoralizing at some points, and easily in the top three classes I've taken in the pre-grad prep and now Master's program. My last suggestion would be to only offer it during the winter when we have nothing to do but stick our noses in a computer because this class definitely ate up my summer!

Overall I think this was a great class and would highly recommend it to others. While the pace was brisk it was still reasonable. Knowing there were going to be interactive class discussions meant I was motivated to keep up with the material. I like the discussion/seminar format but it didn't work out as well as I hoped as many people didn't really contribute. I don't know of anyway to fix this, its difficult to force participation. I may not be in the majority but I did not agree with the complaints about the amount of programming. I thought the programming assignments in the first half of the course helped reinforce the material we covered, I would have loved to see assignments that focused on threads and aync I/O. Working on the shell assignment was enjoyable, perhaps continuing to build pieces on it and watch it evolve as you learn more would work well.

This is class is very different than any other classes I have taken at PSU so far. It was offered first time and it covers Advance Programming in Unix Environment book. The book is like reading a detailed 'man' pages with really good examples.
I learned from this class how to conduct my own small experiments. How to use system calls, library functions and read 'man' pages effectively. I spent a lot of time testing my own code or code from stack overflow/other online sources. The low level details of operating system that goes up to bit level is most important learning from this class.
The assignments helped me understand that there are different approaches of doing same things both complicated and simple one. Also, when sometimes specifications were not clear I needed to communicate with fellow class mates. Students had different understanding of same assignment. Book has lot of simple approaches but while doing projects we could not directly use them.
The advice that I have for my past self is, buy the book as soon as you decide to take this class, read it, download the source code and run all the programs and try to understand them. The code might be small but there is a lot of learning in those lines. The class requires a lot of time so be prepared to do lot of programming and debugging. You can't skip chapters because all concepts in previous chapters will add up later.
I programmed things like ls, shell, uname, Signals, Daemons, threads etc. first time in this class even though I have used C before. Overall this class has a lot to offer that cannot be covered in 8 weeks. I would advice other students to pair this class with light/easier classes.

It's a Morrissey class so you'll be reading and working your ass off. It was the first time this class was offered and it was a lot to take in for 8 weeks in the summer. You come out of it a much better programmer tho. You'll look at things differently and make a pretty bad ass project. Quizzes on the reading but no exams.

Past Courses

CS 4/594 Internetworking Protocols
CS 4/593 Digital Forensics
CS 4/592 Computer Security Practicum
CS 4/591 Introduction to Computer Security
CS 4/552 Component-based Software Engineering
CS 4/510 Advanced Linux Systems Programming
CS 4/510 Secure Programming with SSL/TLS
CS 311 Computational Structures
CS 251 Discrete Structures II
CS 161 Intro Programming & Problem Solving