Throughout my time as an undergraduate, I would create some study guides as part of reviewing course material. A number of people have found these to be helpful, so I figured it would be helpful to collect all of them into a single place.
I would like to thank these incredibly cool and attractive contributors who helped make these guides possible.
Disclaimer: I make no guarantees about the accuracy of any of the information in these guides; I did create them as a part of learning the course material. If you see anything inaccurate or misleading, please create an issue or pull request
Most of the guides here do not contain all of the content taught in courses, especially for more recent semesters. Please do not rely on them as your only study resource.
CPSC 1070, Fall 2020
Programming Methodology, C++, Plaue
This course served as my first introduction to programming in the context of a Computer Science degree, and served a very nice role in providing rigor to many of the concepts I learned when I first started programming. Clemson's introductory CS curriculum has a lot of overlap between courses, so some of the material here may also be applicable to CPSC 1010 or CPSC 1020
- C++ Syntax and Semantics
- Design Patterns
CPSC 2310, Spring 2021
Introduction to Computer Organization, C, Feaster
This course was probably my favorite online course I took at Clemson, and helped me fully understand a lot of concepts and foundations of computers I had only a basic knowledge of before.
- Hardware Structure
- C Internals
- Floating Point Representations, including IEE 254
CPSC 2150, Spring 2021
Software Development Foundations, Java, Sun
This course really helped me develop a sense of how to structure code well, and provided foundations for the academic underpinnings of the Software Engineering field.
- Objected Oriented Programming
- Formal Verification
CPSC 2120, Fall 2021
Data Structures & Algorithms, C++, Dean
Professor Dean's Algorithms course was probably the most intellectually challenging and rewarding undertakings I have ever undergone. The structure of Dean's algorithms course enabled me to solve problems much more effectively. The study guide here is a bit light, and not at all representative of course content, but included for completeness
CPSC 3520, Spring 2022
Programming Systems, Ligon
This course was an exploration of novel techniques which are often new to incoming programmers. The section about language grammars and the underpinnings of programming languages really tickled my PL brain.
- Grammars & Formal Languages
- Functional Programming
- Declarative Programming
- Event Driven Programming
- Parallel Programming
CPSC 3600, Spring 2022
Network Programming, C/Python, Cheng
Networks are extremely important to most professional software developers. This course gave me a really good familiarity with networks and how to write code to interact with them. Some of the projects we wrote for this course have direct applicability to my future work.
- Network Structure
- Application, Transport, Network, Link Layer
CPSC 3220, Fall 2022
Operating Systems, C, Sorber
Sorber's Operating Systems course is known to be very challenging, but very rewarding. In addition to the structures of operating systems, I also learned a lot about why these systems are structured the way they are, and how people solved these fundamental problems in the past
- Processes & Threads
- Disks / Permanent Storage
- File Systems
CPSC 3300, Spring 2023
Computer Architecture, C, Zhang
This course is a successor to CPSC 2310, and went into even more detail about the hardware of computer architecture.
- Logic Functions
- CPU Optimizations: Pipelining, Data Hazards, Branch Prediction
CPSC 3120, Spring 2023
Data Structures & Algorithms II, C++, Iuricich
Despite a difficult subject matter, Iuricich made this course quite accessible and structured things well. DSA II really helped to hone my algorithms skills from the first course, and I feel much more confident about applying these techniques in actual problems now.
- Amortized Analysis
- Union Find Data Structures
- Binary Trees
- Greedy Algorithms
- Dynamic Programming
- Graph Algorithms