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 created 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

Topics Covered:

  • C++ Syntax and Semantics
  • Pointers
  • 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.

Topics Covered:

  • 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.

Topics Covered:

  • Encapsulation
  • Objected Oriented Programming
  • Formal Verification
  • Testing


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.

Topics Covered:

  • 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.

Topics Covered:

  • Network Structure
  • Application, Transport, Network, Link Layer
  • Security


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
  • Memory
  • 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.

Topics Covered:

  • Logic Functions
  • MIPS
  • CPU Optimizations: Pipelining, Data Hazards, Branch Prediction
  • Circuits


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.

Topics Covered:

  • Amortized Analysis
  • Union Find Data Structures
  • Binary Trees
  • Greedy Algorithms
  • Dynamic Programming
  • Graph Algorithms