~/starikov

Coursework archive

academia

Missouri S&T · B.S. + M.S. Computer Science · 2014–2018

Courses
34
Assignments
147
Lines of code
91.5K
Languages
9

The repository is archived — frozen at graduation and unchanged since. Read it on GitHub.

Four volumes

Every course's notes and assignments, typeset in LaTeX and bound into four PDFs — 2,368 pages in all. They open in a new tab; no reader is embedded here (v1).

Selected projects

Fourteen projects that hold up, grouped by what they are. Demos play as you scroll.

Artificial intelligence

Chess AI

CS 5400

Built a chess engine from scratch using bitboards—64-bit integers where each bit represents a square. Move generation becomes pure bitwise operations: shifts for sliding pieces, masks to prevent board wraparound. Combined with alpha-beta pruning, iterative deepening, and a custom evaluation function considering piece positioning, king safety, and pawn structure. Four iterations, each faster than the last.

Shape Packer

CS 5401

Evolutionary algorithm for 2D shape packing. Given a set of irregular shapes and a rectangular board, find the optimal placement that maximizes coverage. The EA uses fitness proportional selection, k-tournament selection (with and without replacement), and truncation for survival. Shapes can rotate and translate—the genome encodes position and orientation for each piece. Mutation perturbs placements; recombination swaps shape configurations between parents. Watching generations converge on tight packings is mesmerizing.

Puzzle Solvers

CS 5400

Four puzzle solvers using various search algorithms. The standout is the A* implementation with custom heuristics that solves complex state-space problems efficiently. Each puzzle required thinking carefully about state representation and admissible heuristics. Watching the solver find optimal paths through thousands of states in milliseconds was deeply satisfying.

Graphics & numerics

Linear Algebra Library

CS 5201

A templated C++ linear algebra library. Supports matrices, vectors, and various decompositions (LU, QR, Cholesky). Heavy use of operator overloading to make matrix math read naturally. The final project ties it all together to solve systems of linear equations with different numerical methods.

Lexical Analyzer

CS 3500
Lexer DFA

A lexer built twice. First in pure Python as an explicit finite state machine—each token category gets a named state, transitions are hand-coded. Then rebuilt in C++ with Lex/Flex, where the same token grammar collapses into a regex spec and Flex generates the FSM for you. Both versions recognize integers, decimals, scientific notation, hex, binary, identifiers, string constants, keywords, operators, and phone numbers in three formats. Doing it both ways is the lesson: you understand what Flex actually buys you.

Graph Analytics Suite

CS 2500
Degree Distribution from Graph Analytics Report

Six classical metrics for social network graphs, implemented from scratch in C++: degree distribution, shortest-path distribution, graph diameter, closeness centrality, betweenness centrality, and community detection. Betweenness uses Floyd-Warshall path reconstruction—every shortest path is recovered, and each intermediate vertex’s centrality counter goes up. The output drives a LaTeX report rendered with pgfplots, so the code’s job ends at producing CSVs the report turns into curves. Empirical graph theory: turning “what does centrality even measure” into a number you can plot.

Games

Splatoonio

CS 4096

Capstone project—a location-based multiplayer paint game for iOS, inspired by Splatoon. Built with Swift + UIKit + MapKit: the map is a grid of 1 m² tiles anchored to real GPS coordinates, and players “paint” tiles by walking over them. Territory is scored by tile ownership at end-of-round. Real-time state sync with a Python server, custom MKOverlayRenderer driving a CGBitmap for the paint layer, and a CoreLocation pipeline that filters and smooths GPS updates to keep painting responsive. The kind of project where you learn that 80% of software engineering is communication and coordination.

Space Invaders

CPE 3150

Space Invaders running on an 8051 microcontroller. Written in assembly and C, pushing against tight memory constraints. Every byte mattered. Implementing smooth sprite movement and collision detection on hardware this limited teaches you what efficiency really means.

Systems & tooling

Knapsack Memory Manager

CS 2500
Input Size vs Time — Brute Force, DP, Greedy

Brute Force vs. Dynamic Programming vs. Greedy on the 0-1 knapsack, framed as a smartphone OS deciding which apps to swap to disk. Each app has a memory cost and a recovery cost; the goal is to free a target amount of memory while minimizing recovery cost. Test rig ran for twelve hours straight, scaling input size until each algorithm hit its wall—Brute Force died at n=50, Dynamic Programming was tractable to n=1,000, Greedy was always fast but only optimal when ratios cooperated. The empirical scaling curves are the actual deliverable; the algorithms are the easy part.

CFG Tracer

CS 4099

Undergraduate research project that instruments C++ code to trace control flow at runtime. A control flow graph (CFG) represents all possible execution paths through a program—nodes are basic blocks (straight-line code with no branches), edges are jumps between them. This tool parses source files, identifies basic blocks, and generates execution traces. Used Boost for regex parsing. The goal was to understand how programs actually execute versus how we think they execute.

Bolt

Bolt Timer Screen
Bolt Settings Screen

iOS interval timer with a custom UI. A circular angular overlay (AngularOverlayView) drives timer state; a small Timer model handles tick logic and persistence via UserDefaults. The interesting bit is CustomPresentAnimationController—a hand-rolled UIViewControllerAnimatedTransitioning that springs the settings sheet up over 2.5 seconds with damped spring physics. Built in 2015–2016, when UIKit was the only game in town and custom transitions meant writing them yourself.

CLC Tally

CLC Tally Screenshot

iOS app for tracking student headcounts at Missouri S&T’s Computer Learning Center. Built to solve a real problem—tutors needed a quick way to log how many students they helped. Simple interface, local storage, export functionality. Sometimes the best software is the software that just works.

Grading Suite

CS 1570

Automated grading tools for CS 1570 intro programming course. Style checker enforces coding standards, roster checker validates submissions, and the grader script runs test cases. Built out of necessity when grading hundreds of student submissions by hand became unsustainable.

Camelot

CS 3100
Socket Chat Client

Team software engineering project with full documentation, UML diagrams, and Doxygen-generated API docs. Practiced agile methodology, code reviews, and collaborative development. The code itself is less interesting than learning how to build software with other people.

An optional iOS chat client (src/cs3800-operating-systems/homework-3/SocketServer) hooks into the server, allowing real-time messaging between users. Built with Swift using JSQMessagesViewController for the chat UI and SwiftSocket for TCP communication.


Course index

34 courses — code, notes, or both — grouped by subject.

CPE 2210 Introduction To Computer Engineering notes
CPE 3150 Micro Embedded Design 3 sets notes
CS 1001 Data Structures Lab 15 sets notes
CS 1200 Discrete Math 6 sets notes
CS 1510 Data Structures 9 sets notes
CS 1570 Grading Suite
CS 1570 Intro To Programming 10 sets
CS 1580 Intro To Programming Lab 15 sets
CS 2200 Theory Of Computer Science 1 set notes
CS 2300 Databases 5 sets notes
CS 2500 Algorithms 6 sets notes
CS 3001 Skills Development 2 sets notes
CS 3100 Software Engineering I 1 set notes
CS 3200 Numerical Methods 6 sets notes
CS 3500 Programming Languages And Translators 3 sets
CS 3800 Operating Systems 4 sets notes
CS 4096 Software Systems Development 1 set notes
CS 4099 Undergrad Research 3 sets
CS 5200 Analysis Of Algorithms 9 sets notes
CS 5201 Object Oriented Numerical Modeling Ninjas 9 sets notes
CS 5400 Artificial Intelligence 4 sets notes
CS 5401 Evolutionary Computing 2 sets
CS 5402 Data Mining 8 sets notes
MATH 1214 Calculus I notes
MATH 1215 Calculus Ii notes
MATH 2100 Foundations Of Mathematics notes
MATH 2222 Calculus Iii notes
MATH 3304 Differential Equations 1 set notes
PHIL 3225 Business Ethics notes
PHYS 1135 Physics I notes
PHYS 2135 Physics Ii notes
PHYS 2305 Modern Physics notes
PSYC 1101 Psychology 101 notes
STAT 3117 Statistics notes

Facts

Degree
B.S. + M.S. CS
Years
2014–2018
Stars
164