School
Relevant or interesting classes I took in my time at the University of Texas at Austin
Spring 2016
Declarative Programming
CS 378
https://www.cs.utexas.edu/~vl/teaching/
- Used CLINGO, a declarative programming tool, to solve problems ranging from standard NP Hard problems to math puzzles to real world problems
- Read papers on and studied the theory and applications behind declarative programming and answer set solvers
Ethical Hacking
CS 378
- Studied and used real world security methodologies and tools like nmap, metasploit, aircrack, John (with and without password lists like rockyou), and burp
- Participated in a premade in class network capture the flag competition for the midterm
- For our final project, we created a tool that, given a range of IPs, would scan those IPs, find live hosts in that range of IPs, find out which of those hosts were web servers (ports 80 and/or 443 open), and crawl the websites performing automated web attacks on it including static analysis of all JavaScript to find known vulnerabilities and dynamic analysis to perform attacks through HTTP requests
Fall 2015
Big Data Programming
CS 378
https://www.cs.utexas.edu/~dfranke/courses/2015fall/cs378-BDP.htm
- Went over Map Reduce and various Map Reduce design patterns such as
- Inverted Index
- Custom Writables and AVRO Objects
- Joins
- Filtering
- Job Chaining
- Went over Spark and Spark design patterns such as inverted index and session filtering
Intro to Security
CS 361
https://github.com/mtesauro/ut-cs-361
- Went over a wide variety of information security concepts, attacks, and defenses
- Practiced security attacks through Hacking-Lab
- Performed an automated test to detect DOM Based cross-site scripting in WebGoat using Gauntlt and a headless webdriver, Watir
Debugging and Verifying Programs
CS 340D
http://www.cs.utexas.edu/users/emerson/cs340d.txt
- Went over topics concerning debugging and verification of programs, including Hoare logic and temporal logic
- Wrote a research essay entitled "Game Theory Applications to Temporal Logic" over a cross section of elementary game theory and it's applications to temporal logic
Spring 2015
Object Oriented Programming
CS 371P
- Went over object oriented programming with a focus on the SOLID (Single responsibility, Open/closed, Liskov substitution, Interface segregation, Dependency inversion) principles.
- Practiced psuedo-realistic C++ projects involving github, pair programming, and continuous integration via Travis CI.
Compilers
CS 375
http://www.cs.utexas.edu/users/novak/cs375.html
- Covered the phases of the compiler, including lexical analysis, syntactic analysis and parsing, code optimization, code generation.
- Covered Regular and Context Free Grammars, Types of Parsers, Symbol Tables, Array references, records, and pointers, Linking and Loading.
- Implemented a Pascal compiler that compiled Pascal code into x86 assembly. This includes the following phases
- 2 versions of lexical analysis, one using C and another using lex.
- A parser using yacc.
- A code generator that also performed optimizations.
Operating Systems 2
CS 350F
- Went over the following concepts
- System Calls
- Synchronization and Concurrency
- Virtual Memory
- File Systems and Disk Management
- Deadlock and Distributed Deadlock
- Security and Protection
- Generalized Rate Monotonic Scheduling
Fall 2014
Theory of Computation
CS 353
http://www.cs.utexas.edu/~diz/353/
- Covered topics including Turing Machines, Time and Space complexities and classes, useful cases for "hard" problems, and approaches to solving "hard" problems
Network Security
CS 361S
- Went over a variety of topic including cryptography, web and system attacks, defenses against attacks, and intrusion detection.
- Performed various web attacks such as SQL injections, cookie hijacking, and cross site scripting on a broken web application within a virtual machine.
- Performed various attacks on broken C programs using various approaches, as outlined in the following articles
PHP/SQL
CS 105
https://www.cs.utexas.edu/~jthywiss/C%20S%20105%202014%20Fall%2052715%20Syllabus.pdf
- Created a bidding web application on the LAMP platform.
- Conformed web application to both HTML 5 and XML web standards as well as following CSS 2.1 standards.
Spring 2014
Algorithms and Complexity
CS 331
http://www.cs.utexas.edu/users/plaxton/courses.html
- Went over topics such as
- Stable Marriage, Graph Problems and Traversals, Greedy Algorithms, and Divide and Conquer Algorithms
- Dynamic Programming, Max-flow Min-cut problems, and the Ford-Fulkerson Algorithm
- NP, NP-completeness, PSPACE, PSPACE-completeness, Undecidability, the Halting Problem
- Approximation Algorithms and Randomized Algorithms
- Used techniques, discrete math, and proofs to implement and design algorithms to solve the same problem, the optimization of an auction (creating a Maximum Weight Maximum Cardinality Matching of a bipartite graph), in increasingly faster times. We started with the naive solution of O(n!), brought it down to O(n^2) through simple observations, and finally ended up at a runtime of O(n) taking a dynamic inspired approach.
Computer Networks
CS 356
http://www.cs.utexas.edu/~gouda/
- Explored the theory of networks using the professors self created Abstract Protocol Notation.
- Through this AP Notation, learned about
- TCP, UDP, and error detection in both. Also went over error recovery and flow control for TCP.
- Local and global topology maintenance, along with routing and switching.
Intro to Computational Linguistics
LIN 353C
http://www.katrinerk.com/courses/intro-to-computational-linguistics-ug
- Implemented concepts we learned in class using python and the NLTK (Natural Language Toolkit) addon.
- Went over concepts such as
- Regular Expressions
- Finite State Automata and Transducers
- Part of Speech Tagging and Chunking
- Classification
Fall 2013
Operating Systems
C S 439
http://www.cs.utexas.edu/~ans/classes/cs439/index.html
- Created a simple user shell
- Modified a partially implemented Operating System called PintOS. More specifically
- Changed from a single threaded system to a multithreaded system
- Implemented argument passing via a stack and system calls such as exec, read, and wait
- Allowed stack growth via page faults and changed the virtual memory system from using contiguous allocation to using a page table, frame table, and supplemental page table
- Modified the filesystem to use multi-leveled index inodes and allowed the creation and traversal of directories
Perl
C S 105
- Learned how to code in Perl
- Created a program to use IMDB's database to calculate a given actor or actress' degree from Kevin Bacon
Spring 2013
Computer Organization and Architecture
C S 429
- Wrote a y86, a toy assembly language based on x86, interpreter
- Optimized a cache to operate twice as efficiently through various optimizations
Fall 2012
Data Structures
C S 314
http://www.cs.utexas.edu/users/novak/cs314.html
- Learned about the paradigm of Lisp
- Solved algebraic equations with pattern matching
- Experimented with path finding via Dijkstra's algorithm, Prim's algorithm, and A* pathfinding
- Experimented with MapReduce
Usability and User Centered Design
UGS 302
http://courses.ischool.utexas.edu/Bias_Randolph/2013/Spring/UGS303/index.html
- Performed a heuristic evaluation on the UT School of Information Website
- Studied other usability tests such as remote usability testing, surveys, field testing, and crowd sourced usability testing
Logic, Sets, and Functions
C S 313K
http://www.cs.utexas.edu/~gouda/
- Studied boolean formulas, predicates, basic proofs, graph theory, sets, functions, recurrences, and Big-O, Omega, and Theta notations