It's a Wrap: A Review of Cal Poly Pomona Masters Degree in Computer Science
A comprehensive review of my experience at Cal Poly Pomona doing the Masters degree in Computer Science
Hello internet, Matt here from forensics with Matt and in today’s video I will be talking to you about my masters degree in computer science. You will learn about the classes I took, how they felt and how I ultimately performed in them. Without further adieu, let’s get into this.
1: Why I chose CPP
I took two years to complete my Masters degree. At the time I applied, I was looking for a cybersecurity degree that could help me get a job in the industry. I was also looking for a degree that was in person and in the LA area. I was looking between three degrees:
CPP MSCS
CPP MSIS (Masters in Information Systems)
Utica College Masters in Cybersecurity
I ultimately looked, to a greater degree, into CPP because, at the time, I was diving deeper into one of the club communities that a friend introduced me to. This club (Cal Poly Forensics and Security Technology) was the single thing that made me go to CPP over other schools.
I had a preference fot the MSIS, at the time. I applied for the Spring 2023 semester because I missed out on applying for the Fall 2022 one. This was because I originally did not want to go back to school, but I ended up feeling like I had to because the job market was not in my favor at the time. I’d have to wait until the following fall if I were to really want the MSIS degree and I did not want to do that because that would mean more time not earning money. So I applied and got in.
The MSCS at CPP is a 30-unit degree that takes 1.5-2.5 years depending on how quickly you plan to finish classes.
From here on, you will learn about the classes I took, which ones I liked, which ones I disliked and which ones are required. I will give a timeline after I list the requirements.
Required Classes
In the MSCS at CPP, there are six required classes. Four of these six classes are topic based, meaning they are advanced versions of classes required for the Bachelor’s degree in CS. These classes are:
Advanced Computer Architecture (3 Units)
Advanced Algorithm Design and Analysis (3 Units)
Advanced Software Engineering (3 Units)
Graduate Seminar (Presentation based on your project or thesis choice) (1 unit)
When it comes to the other classes, they are based on your culminating experience. This means that they are required to graduate and based on your master’s thesis or project.
Directed Research (CS 6910) (1Unit for project/2 units for thesis)
Master’s Project (CS 6950) (1 Unit)/Masters Thesis (CS 6960) (3 Units)
You may be able to finish earlier or with less classes if you choose the thesis option. However, you will be under more scrutiny if you choose that option, so choose wisely.
The above 15 or 15 units are your base to run off of on the Masters degree. The remaining 15 or 18 units are up to you to fill with classes that interest you and are on your schedule.
Class Scheduling
When it came to classes, I was able to take classes with numbers 4XXX or 5XXX. This, in terms of CPP classes, meant upper division, senior-level classes or graduate-level classes.
All of the classes I took were generally held after lunch in the afternoon or evening. The most common time was during the hour after lunch (1300-1415). If a class was scheuled to end in the first quarter of an hour, the following class (if it were scheduled in the same room) would begin 15 minutes after the first one ended. Same went for classes in other rooms.
The latest class I took went from 17:30 to 18:45. This was the Advanced Software Engineering class. Some other classes at undergrad and grad levels were scheduled later than the SWE class, but I fortunately was able to avoid them. Next is the part you all are here for: The class descriptions.
Class Descriptions: Semester 1
CS 5250: Advanced Computer Architecture
In the first semester, I took two classes, the Advanced Computer Architecture class and a special topics class (CS 5990) that was on data security and privacy. The Advanced Architecture class, first of all, was all about how to build computer chips, how they work at their lowest level. We covered the following topics in depth in this class:
Fundamentals of Quantitative Design
Memory Hierarchy
Instruction Set Architecture
Pipelining
Instructional Level Parallelism
Data Level Parallelism
Thread-level parallelism
Warehouse-scale computers
This was the first half of the semester, the one in which the teacher lectured about each topic. In the second half of the semester, the entire claess split into groups and prepared presentations on specific topics in computer architecture. The topic I presented on was the Intel I7 6700 processor. This was a great project to undertake because I was very interested in it because I had a chance to learn more about the processor which I have been using for almost a decade in one of my computers.
The professor for this class was Dr David Johannsen and it was paced well, delivered well and interesting overall. I’d recommend enrolling in Dr Johansen’s classes if he still teaches them. My overall rating for this class is 4/5
CS 5990: Special Topics (Data Privacy and Security)
This class was the first of my two CS 5990 classes and was allocated three units. This class touched on the methods and algorithms used for maintaining privacy and security over our data. It offered these three major subsections based on privacy-related subtopics:
Differential Privacy and Anonymity
Cryptography
Machine Learning for Privacy and Security
These three sections were rich with information. They were also organized well. The first section was split into eight lectures. These lectures covered topics like using k-anonymity to achieve privacy, l-diversity, t-closeness, the aspects of differential privacy, querying and Laplace functions, and a final lecture on Apple’s priacy at scale. In the second section, we reviewed various cryptographic algorithms including ElGamal and RSA, paying special attention to concepts like homomorphic encryption. We also looked into encryption types (symmetric and asymmetric) and applied them to data protection for organizations and people. In the final section, we learned about neural networks and machine learning. We talked about convolutional neural networks, generative adversarial networks, and ways to fight against image recogntition systems.
There were also presentations necessary for each person to do as part of class goals. I did mine on Secure Skyline Queries. It was based on this article.
Overall, this class was interesting and I was able to gain knowledge on key concepts that are important for cybersecurity, namely cryptographic algorithms and how to maintain privacy. Overall, this class was a 4.5/5. The instructor, Tingting Chen, was clear and concise and was also easy to follow. The content was also very interesting to me, even though it was difficult to understand at times. I’d recommend you take a class with Tingting Chen if you are given the opportunity.
Semester 2 Class Descriptions
In the second semester, I, again, took two classes. I had six units under my belt at this point.
CS 5300: Advanced Algorithm Design and Analysis
This class was the second of the required core classes. It was information-dense, but felt very familiar to the undergrad course in this topic. It was organized into three modules:
Module 1: Review: Complexity, Divide & Conquer, Greedy, Dynamic Programming
Module 2: Theory of NP-Completeness
Module 3: Approximation Algorithms
Very little new information was presented in this class compared to the previous class. All that I remember being new was the information on NP-Completeness. This class also had final presentations at the end in the last few classes. Of the twelve groups, my group was tasked with exploring pattern matching algorithms. I specifically explored regular expressions and other text-based pattern matching algorithms.
This class was very easy and lectures were hard to understand. This is one of the reasons why I did not like the class. The professor, Gilbert Young, was a funny guy who was hard to underrstand. This came from the fact that he would talk in an almost rambling manner that was not very easy to follow. I do not recommend him; this class scores a 2/5 on my scale.
CS 5550: Digital Image Processing
Do you know this woman? Well, I know her well because of this class!
Lena was a great model for the purposes of seeing what happens when a certain filter acts upon an image. With the black and white version of her image, I was able to see how exposure, color, saturation, and other aspects of the image changed when filters were applied. This class was fun in this regard.
One aspect of the course that was more stressful than fun was the programming. The goal of the class was to listen to lectures and then make the lecture material into programs that manipulated the image of Lena based on what the class was teaching. I will share this program in a future post, but the programming was hectic to get that program done in time. I had multiple assignments each week and I could barely complete them in time.
On top of the main classwork, there was a final project that asked me to make a program that can do something with a paper in the digital image processing domain. I ended up choosing a paper on image steganography. For this, the goal was to hide data inside an image without visually changing the image. This was a very fun implementation that I might actually discuss on this blog at some point.
Overall, this class was fun and interesting. The rating I give for this class is a 3.5/5 because I didn’t like the sheer volume of homework I had to complete to get a grade in this class. The programming was brutal, especially because I had a tough time wrapping my head around the algorithms and also had problems setting up my environment. It was taught by Dr Amar Raheja.
Semester 3 Class Descriptions
The third semester was the time when I kickstarted my masters project and was also the halfway point of my degree. I had three classes (technically) this semester. Two of them were actual classes and the other was just the “class” that makes up the first part of my masters project, the directed research. Descriptions of my masters project courses will be saved for a later post.
CS 4650 Big Data Anlysis and Cloud Computing
This class was another class by Dr Johansen and a fun one too. I had the chance to learn a bit about cloud computing and I also had the chance to set up some databases and run functions on them. These are all of the things that the class touched on:
Databases
Map/Reduce
Python package managers, setup and basics
Pandas
Supervised learning
Machine learning (Supervised and unsupervised)
Statistics and regressions (logistic and linear)
Cloud infrastructure, setup, AWS and cloud security.
This information was interesting and it did a great job of satisfying my desire to learn more about cloud security.
There were four assignments, two quizzes and a final project in this class. The four assignments consisted of two on Map/Reduce, one on statistics and one on AWS cloud computing. The project had a group of students select a dataset from Kaggle and run some ML operations on it to find trends in its data. My group picked a dataset about housing prices. We cleaned and prepared the data by handling missing values, encoding categorical variables, and selecting key features using correlation analysis. Then we implemented and compared Linear Regression, Polynomial Regression, and Random Forest models, with Random Forest performing best. We used heatmaps and scatter plots to visualize feature importance and prediction results. Our final model achieved a strong Kaggle score of 0.14243.
Overall, this class was a 4/5on my scale. I enjoyed everything that was taught but was slightly bored in some perts because I was already familiar with cloud concepts.
CS 5990: Quantum Computing
This quantum computing course provides a comprehensive introduction to both the theoretical and practical aspects of quantum computation. It covers the historical foundations and philosophical context, explores classical and reversible logic gates, and introduces core quantum concepts such as qubits, matrix representations, and various quantum gates including Hadamard and Pauli gates. The course includes hands-on simulation using tools like Qiskit and QCA Designer, delves into quantum algorithms like Deutsch-Jozsa, Shor’s, and Grover’s, and examines quantum cost and physical realization of circuits. Assessments include homework, projects, exams, and the opportunity to develop original research ideas into scientific papers.
This class was taught by Dr Kievan Navi and was mainly based on a lecture. It had two exams and an optional final. The final could be replaced with a presentation on a concept in quantum computing. I chose the presentation route (and was the only one to do this). My presentation was on Schor’s Algorithm and was well-liked by the class and the professor.
Overall, I’d call this class a 4/5. I’m tempted to give it a lower score, but I won’t because Dr Navi was a fun professor to be in class with. He told good jokes and had some interesting tangents and stories to tell. I liked Dr Navi so much that I asked him to be part of my Masters committee.
Semester 4 Class Descriptions
The fourth semester was the semester that I had both the worst class and one of the best in my degree. I also had the final required courses: the seminar and the Software Engineering class. The seminar class will not be described in detail here.
CS 5180: Information Retrieval
The Information Retrieval class with Dr Ericsson Santana-Marin is a class to take if you are interested in the processes that underlie the functionality of the internet. It touches on concepts like regular expressions, search engines, search engine optimization, indexing, and other concepts in search engine and digital information retrieval topisc. In short, I have to say that it was very intriguing to be able to learn how search engine work and display the results they do.
The work in this class was straightforward. We had five homework assignments based on the lecture we were traversing. After the homework, there were three exams. The three exams were EXTREMELY similar to the homework that we were assigned. It’s a case very similar to those professors who go through their bank of questions and chanve some numbers around and alter the figures a little bit and call that an exam. I like this because it makes it eaasier to practice and get good scores. There was also a final exam, unlike many other classes I had taken before.
On top of the assignment work and preparing for exams, there was also a final project. In this project, the class was able to split itself into groups of up to five and work together. The goal of the project was to build a web crawler and search indexer to index pages and find information from various departments from CPP. My group chose to make our project on the CPP Biology Department. I might show this on a future post.
Overall, this class kept me engaged and I was genuinely interested in it. For this reason, I rate it a 4/5. I have yet to give any class a full five stars and that is because I do not like writing code and most of these classes had a component of code to them. Regardless of this, I was so satisfied with Dr Marins teaching and enthusiasm for the subject htat he taught that I invited him to my graduate committee.
CS 5800: Advanced Software Engineering
From the top, this was BY FAR the worst of the classes that I took. I will explain this throughout this section. It all deals with the professor Nima Davarpanah.
The class, itself was fine. It taught about design patterns for software engineering, UML diagrams and object-oriented programming methodologies. Nima used two books (“Clean Code” and “Design Patterns Elements of Reusable Object-Oriented Software”) to supplement his teaching and the class was actually forced to read them and take notes on them for assignments and special lectures.
We had eight assignments and two quizzes. The work structure is where the class began to fall apart and show itself as the worst class of my degree. This stems from the fact that Nima was inconsistent with assigning things. The first assignment on inheritance, polymorphism, aggregation and composition was assigned right away. The others had dates they were supposed to be assigned on , but many of them were not assigned on time. Much of this lateness to assign things came from two places. The first reason for this lateness was due to Nima’s inability to get to class on time. He would often be late to class by anywhere from fifteen to forty-five minutes. The other reason is subjective to me, and this is his indecisiveness. He would say that he was going to assign an assignment the “next class” but wouldn’t for some odd reason.
Another thing I didn’t approve of was the quizzes. He had two quizzes in his class, but they were harder than they should have been. Nima made his quizzes fully based on programming. There is no real issue with that except for the ability of students to finish the quiz in an hour. I understand that we need to learn to type fast as aspiring software engineers, but I can’t get behind him giving us a full assignment’s worth of programming to build, error-free, mind you, in only an hour.
He did not make his class take a final exam. Instead of the final exam, he asked his class to split into groups of four and work together on creating UML diagrams of a production software of their choice. We were expected to draw up UML object, activity, and class diagrams on this software. My group chose YouTube as our big software to do our diagrams on. This was a very fun project and I was able to contribute a great deal of insight on features to this project.
Overall, this class gets the lowest ranking of them all. I’ll be generous and give it a 2/5 since I found alot of the material fascinating. The main reason for this low score is the things I mentioned above. I really did not like Nima’s tardiness often and I also didn’t like the inconsistency of the homework assignments.
Semester 5 Class Descriptions
Semester 5 was my final semester and the lightest one. I only had one class and the final part of my research to complete. Having only one class (that incedentally had very little work) and no intense jobs gave me a great deal of time to work on my researching and writing my final paper on my research topic which was privacy and security in iOS language learning apps. It was a very nice change to have almost no work to do this semester (outside of my report, research, experimentation, and a job creating a forensic situation for a professor on campus.
CS 4990: Generative AI
This class on generative AI was a “Special Topics” course in the Undergraduate catalogue. It had its ups and downs, but overall it was a very interesting experience learning about how all of these new AI applications work. In service of this, we looked at various types of neural networks in machine learning like convolutional neural networks (CNNs), generative adversarial networks (GANs), Recurrent Neural Networks (RNNs), Invitational Autoencoders (VAEs) and their derivatives. This was fascinating to be able to gain the knowledge about these topics.
The class structure was just lecture and a project at the end. The lectures went over all of the topics well. The projects consisted of two paarts: a presentation and a final report. They were also team-based affairs. I was in a team of six that made our project based on using gen AI for music style transfer (turning music of one genre into another). It was fun learning how to make these networks and intriguing to see how each of them performed at translating between music styles. The three styles we tested were pop, jazz and classical.
Overall this class was mediocre in its delivery and very well put together for the project. I would give it a 3/5. It was delivered by Dr Sai Chandra Kosaraju, who is a decent professor for being young, and is worth taking for anyone interested in AI. I am not very interested in AI, but this class was still interesting in many parts. It was, however. difficult to understand in some parts where we were getting deeper into the mathematical basis for AI and neural networks.
Conclusion
Although, for what it was, the master’s degree had some fun classes that I’d take again or attempt to recreate on my own, I did not like it as a way to spend my time. This stems from it being very tangential to my interests. I’d say that I have to learn some very basic programming for being good in digital forensics. I do NOT, however, need a great deal of programming or deep understanding of AI to be a good digital forensic investigator. I do need other skills, like knowledge of how people work, the curiosity for learnign about how our everyday technology works and how it can be “hacked” to hide or miss information, and how the laws around criminal justice works. I knew that I wanted to pivot into digital forensics since the summer after semester 1 but I did not know where I’d go with this interest, so I stayed in school. I regret that. I feel like I wasted time doing computer science work that I did not need to do for being in digital forensics.
Also, based on the classes that I took, I’d say that the degree is overall not worth the money. Please note that I did not pay the full amount due to financial aid. I did pay around $7000 overall and I thought it wasn’t worth for the classes. The classes felt like I was redoing undergrad classes, definitely not what I expected from graduate classes. I thought they would be more rigorous and deeper into the subjects they were covering. Some of these classes were even the SAME classes as their undergraduate counterparts.
I personally recommend that you avoid this degree if you want a good masters degree for your money. The only reasons I would say you should enroll is because you want a cheap degree to fill a requirement or because you like CPP. Otherwise, look somewhere else.
Well, that’s a wrap. This has been Matt of Forensics with Matt talking about my Master’s degree in Computer Science. If you enjoyed or have a friend interested in this degree, please don’t hesitate to send this to them. Thanks for reading and I hope yo stick around for the next post, most likely about the major projects I had in the classes at CPP. Until next time, Matt OUT!