Michael E. Cotterell's Curriculum Vitae

A recent hard copy of my CV can be found here.

Academic History

  • Ph.D. Computer Science (Doctoral Minor in Statistics) – University of Georgia (currently pursuing)
Major GPA: 4.0; Cumulative GPA: 3.92
Coursework complete; Any remaining coursework on my Program of Study is related to research
and dissertation writing only.
  • B.S. Computer Science – University of Georgia (May 2011)

Teaching Experience

University of Georgia

  • Faculty Instructor of Record
    • CSCI 1730 - Systems Programming (Spring 2017)
    • CSCI 2610 - Discrete Mathematics (Spring 2017)
    • CSCI 1730 - Systems Programming (Fall 2016)
    • CSCI 3030 - Computing, Ethics, and Society (Fall 2016)
    • CSCI 1730 - Systems Programming (Summer 2016)
    • CSCI 2610 - Discrete Mathematics (Summer 2016)
    • CSCI 3030 - Computing, Ethics, and Society (Summer 2016)
    • CSCI 1302 - Software Development (Spring 2016)
    • CSCI 3030 - Computing, Ethics, and Society (Spring 2016)
    • CSCI 1302 - Software Development (Fall 2015)
    • CSCI 1730 - Systems Programming (Fall 2015)
  • Graduate Instructor of Record
    • CSCI 2720 – Data Structures (Summer 2015)
    • CSCI 1302 – Software Development (Spring 2015)
    • CSCI 1302 – Software Development (Fall 2014)
    • CSCI 1730 – Systems Programming (Summer 2014)
    • CSCI 1302 – Software Development (Spring 2014)
    • CSCI 2610 – Discrete Mathematics (Fall 2013)
    • CSCI 1302 – Software Development (Spring 2013)
    • CSCI 1302 – Software Development (Fall 2012)
  • Lab Instructor
    • CSCI 1301L – Introduction to Computing and Programming Lab (Spring 2012)
    • CSCI 1301L – Introduction to Computing and Programming Lab (Fall 2011)

Publications

  • A list of my publications can be found here.

Internships

  • National Renewable Energy Lab (NREL) (Summer 2012)
I worked in the Strategic Energy Analysis Center (SEAC) under the direction of Dr. Aaron Beach. My work focussed on research towards Energy Systems Integration (ESI). During this internship, I developed the first version of the Ontology for Energy Investigations (OEI).

Research Groups

My contributions include research into the applications of Unicode in the ScalaTion Domain-Specific Language (DSL) and a smaller DSL for simulation optimization.
My contributions include creating extensions for the Galaxy workflow editor via jQuery, wrapping web-service suggestions into a JSONP Web service, and incremental improvements to Rui Wang’s Web service suggestion algorithm.

Service Work

Professional Memberships

  • Association for Computing Machinery (ACM)
  • ACM Special Interest Group on Simulation (SIGSIM)
  • Institute of Electrical and Electronics Engineers (IEEE)
  • IEEE Computer Society

Graduate Computer Science Courses Taken

University of Georgia (GPA: 3.9; Major: 4.0)

  • CSCI 9005 – Doctoral  Graduate Student Seminar (Dr. Bhandarkar) (Fall 2013) (S)
  • CSCI 8740 – Advanced Topics in Real-Time Scheduling (Dr. Funk) (Fall 2013) (A)   
  • CSCI 8610 – Topics in Theoretical Computer Science (Dr. Canfield) (Fall 2012) (A)
In this course we learned the about randomized algorithms and probabilistic analysis. The material covered chapters from “Probability and Computing: Randomized Algorithms and Probabilistic Analysis”  by Michael Mitzenmacher and Eli Upfal.
  • CSCI 8380 – Advanced Topics in Information Systems (Dr. Arpinar) (Spring 2012) (A)
This class covers advanced topics in information systems and databases. The two major issues dealt with are: (1) information integration and interoperability, and (2) novel database technologies. The first addresses the integration of autonomous and heterogeneous resources managing structured, semi-structured, and unstructured data. The second deals with the query formulation, and processing on heterogeneous content. Special attention will be given to emerging research areas fueled by the Web and related technologies.
  • CSCI 8370 – Advanced Database Systems (Dr. Miller) (Fall 2012) (A)
A Markov Model for Ontology Alignment: The explosion of available data along with the need to integrate and utilize that data has led to a pressing interest in data integration techniques. In terms of Semantic Web technologies, Ontology Alignment is a key step in the process of integrating heterogeneous knowledge bases. In this paper, we present the Edge Confidence technique, a modification and improvement over the popular Similarity Flooding technique for Ontology Alignment.
  • CSCI 6950 – Directed Study in Computer Science (Dr. Miller) (Fall 2013) (A)  
  • CSCI 6950 – Directed Study in Computer Science (Dr. Miller) (Spring 2013) (A)
  • CSCI 6950 – Directed Study in Computer Science (Dr. Miller) (Fall 2012) (A)
  • CSCI 6950 – Directed Study in Computer Science (Dr. Miller) (Spring 2012) (A)
  • CSCI 6950 – Directed Study in Computer Science (Dr. Miller) (Fall 2011) (A)
ScalaTion: For this Directed Study course, I worked on Dr. Miller’s Scala-based Simulation System called ScalaTion which includes an embedded or internal domain-specific language (DSL) for Modelling & Simulation. My contributions, among other things, included the addition on Unicode operators to the DSL as well as a new numeric vector class.
UGA Web Services Annotations: For this Directed Study course, I also helped with the UGA Web Services Annotations Group. My contributions included work on the core algorithms as well as the UI extensions for Galaxy.
  • CSCI 6760 – Computer Networks (Dr. Li) (Spring 2013) (A)
DNS Client: Created a DNS client similar to dig or nslookup in Python 3. Source code and Git log are available upon request.
DNS Proxy Server: Created a DNS proxy server in Python 3. DNS clients can make a UDP request to my proxy and my proxy makes a TCP request to some other (specified) DNS server. Source code and Git log are available upon request.
  • CSCI 6610 – Automata and Formal Languages (Dr. Canfield) (Spring 2012) (A)
This class covers the fundamental limitations on mechanized computation. In the first part of the course, the emphasis is on possible versus impossible computations. Three classes of languages are considered: regular, context-free, and recursively enumerable. In the second part of the course the emphasis shifts to possible versus feasible computations.
  • CSCI 6480 – Approximation Algorithms (Dr. Funk) (Spring 2013) (A)
  • CSCI 6210 – Simulation and Modeling (Dr. Miller) (Fall 2011) (A)
Scala Tool Talk: Presented an overview of the Scala programming language and provided instructions on how to download both it and the ScalaTion library. 
Simulation Engine and Example Applications: My group developed a simulation engine in Scala over the course of the semester. We used this engine in multiple class projects as well as the term project.
Event Scheduling Review: I did a review of event scheduling simulation for the rest of the class in preparation for our first exam. Code samples provided in the slides are written in Scala.
Model of a Common Fast Food Restaurant: My partner, Robert Edger, and I modeled and simulated a common fast food restuarant using process interaction simulation. We validated our model using a Jackson Queuing Network and showed that our results well within the 95% confidence interval around the mean.
  • CSCI 6050 – Software Engineering (Dr. Kochut) (Fall 2011) (A)
Carrello: For our term project, my group developed by a software system to support the electronic commerce branch of a large company. We used a modified waterfall model for development which included requirements elicitation, requirements analysis, data design, implementation, and testing. (Related Blog Posts)

Undergraduate Computer Science Courses Taken

University of Georgia

  • CSCI 4950 – Directed Study in Computer Science (Dr. Miller) (A)
ScalaTion: For this Directed Study course, I worked on Dr. Miller’s Scala-based Simulation System called ScalaTion which includes an embedded or internal domain-specific language (DSL) for Modelling & Simulation. My contributions, among other things, included the addition on Unicode operators to the DSL as well as a new numeric vector class.
  • CSCI 4760 – Computer Networks (Dr. Couto) (A-)
PhatChat: For the final project in 4760, I designed and implemented a Peer-to-Peer chat protocol and chat client in Java.
  • CSCI 4720 – Computer Architecture and Organization (Dr. Taha) (A-)
In this course we learned the fundamentals of computer performance and architecture. We also learned how to write simple programs in the MIPS assembly language.
  • CSCI 4470 – Algorithms (Dr. Robinson) (B+)
In this course we learned the about algorithms. The material covered basic algorithm analysis, design techniques (divide-and-conquer, dynamic programming, greedy, and branch-and-bound), graph algorithms, and NP-completeness.
  • CSCI 4370 – Database Management (Dr. Miller) (A)
Oracle Tool Talk: My group partner (Paul Duke) and I gave a talk on Oracle 10 XE.
ShelfApp: Shelf is the culmination of the final project in 4370. It is an inventory browser and management application. From a web interface, one can view, manipulate, and add meta-data to items, and one can also organize those items into “shelves”. Adding items to shelves requires only minimal data entry which ShelfApp uses to identify, and then retrieve further information sources available from established, Internet accessible, RESTful resources (such as IMDB information for Movies). Our application is written in Python and built on top of Google magic (Google App Engine)! (See: Live Demo) (Other group members: Paul Duke)
  • CSCI 4250 – Computer Security (Dr. Li) (A)
phatELF: ELF Padding with Executable Code!
WordPress 2.0.1 XSS Exploit Presentation: Slides and example code for exploiting a XSS vulnerability in WordPress 2.0.1. (supplemental material)
  • CSCI 4070 – Introduction to Game Programming (Dr. Smith) (A)
Masato: Using Microsoft Visual Studio 2008, XNA, and C#, I created the precursor to a 2-dimensional tile-based action-adventure game similar to the Legend of Zelda on the Super Nintendo.
  • CSCI 4050 – Software Engineering (Dr. Kochut) (B)
TradeU Electronic Auctioning System: An online auctioning site written in Java using Servlets and a custom MVC framework. Although this term project never really got finished, my team and I gained a lot of insight into requirements analysis and data model design. (See: TradeU Requirements Analysis Document) (Other group members: Amir Abdolrashidi, Sumedha Ganjoo, Terrence Kwasha)
  • CSCI 3030 – Computing, Ethics, and Society (Dr. Maier) (B+)
In this course we were introduced to social and ethical issues relating to computer science and information technology. The material covered intellectual property, open source software, the digital divide, globalization, and professional ethics.
  • CSCI 2720 – Data Structures (Dr. Arabnia) (A-)
In this course we learned about the design, analysis, implementation, and evaluation of the fundamental structures for representing and manipulating data. The material covered lists, arrays, trees, tables, heaps, graphs, and their memory management. We had to implement a B-Tree in this course.
  • CSCI 2670 – Introduction to Theory of Computing (Dr. Robinson) (A)
In this course we learned about deterministic and non-deterministic finite automata, regular expressions, context-free grammars, push-down automata, pumping lemmas, the Chomsky hierarchy of language classes, Turing machines and computability, undecidability of the halting problem, reducibilities among decision problems and languages, time and space complexity, and NP-completeness and tractability.
  • CSCI 2610 – Discrete Mathematics for Computer Science (Dr. Cai) (A-)
In this course we learned about the fundamental mathematical tools used in computer science, including: sets, relations, and functions; propositional logic, predicate logic, and inductive proofs; summations, recurrences, and elementary asymptotics; counting and discrete probability; undirected and directed graphs; introductory linear algebra, with applications in computer science.
  • CSCI 1730 – Systems Programming (Dr. Lowenthal) (A)
PhatShell: For the final project in 1730, I wrote a Unix command shell, similar to Bash, using C++ and system calls. It supported background jobs, process management, and customizable settings (via a .phatrc file). NOTE: In 2012, I started porting this from Solaris to a modern Linux distribution (i.e., Ubuntu/Debian).
  • CSCI 1302 – Software Development (Dr. Ramaswamy) (A-)
In this course we learned about object-oriented programming using Java. The material included inheritance, polymorphism, visibility, and other things related to object-oriented programming. We also implemented recursive algorithms in Java.
  • CSCI 1301 & 1301L- Introduction to Computing and Programming (Dr. Couto) (A)
In this course we learned about some of the fundamental techniques of program development and supportive software tools. We were assigned programming labs and projects in Java.

Foreign Language Courses Taken

University of Georgia

  • LATN 2001 – Intermediate Latin II (Dr. Corrigan)
  • LATN 1002 – Intermediate Latin I (Dr. Corrigan)
  • LATN 1001 – Elementary Latin I (Staff)
  • JPNS 3010 – Advanced Japanese I (佐々木先生・Caldwell)
  • JPNS 2002 – Intermediate Japanese II (佐々木先生・Caldwell
  • JPNS 2001 – Intermediate Japanese I (佐々木先生・Caldwell)
  • JPNS 1002 – Elementary Japanese II (Akira Kondo)
  • JPNS 1001 – Elementary Japanese I (Ken Knight)

Some of the class descriptions on this page are pulled directly or paraphrased from the UGA Bulletin.