Michael E. Cotterell's Curriculum Vitae

Academic History

  1. Ph.D. Computer Science – University of Georgia (currently pursuing)
  2. B.S. Computer Science – University of Georgia (May 2011)

Recent Publications

  1. Alok Dhamanaskar, Michael Cotterell, Jie Zheng, John Miller, Jessica Kissinger, Christian Stoeckert. “Suggestions in Galaxy Workflow Design Based on Ontologically Annotated Services” In CONFERENCE (2012) (in preparation)
  2. Michael Cotterell, John Miller, Tom Horton. “Unicode in Domain-Specific Programming Languages for Modeling & Simulation: ScalaTion as a Case Study” In Technical Report #UGA-CS-LSDIS-TR-11-011 (May 2011), pp. 1-10
  3. Jun Han, John Miller, Arash Jalal Zadeh Fard, Michael Cotterell, Krys Kochut, William York. “SimOptCloud: A Cloud-based, Semantically Enriched Environment for Simulation Optimization” JOURNAL, Vol. z (2012), pp. z-z (in preparation)
  4. Michael Cotterell, John Miller, Jun Han, Tom Horton. “SimOptDSL: Extending ScalaTion, a Domain-Specific Language for Modeling & Simulation, for Simulation Optimization” In CONFERENCE (2012) (in preparation)
  • Click here to see a list of all my publications.

Research Groups

  • UGA Cloud Computing GroupComputer Science Department, University of Georgia
    • My contributions include research towards simulation and simulation optimization in the cloud.
  • ScalaTion GroupComputer Science Department, University of Georgia
    • My contributions include research into the applications of Unicode in the ScalaTion Domain-Specific Language (DSL) and a smaller DSL for simulation optimization.
  • UGA Web Services Annotations GroupComputer Science Department and Institute of Bioinformatics, University of Georgia
    • 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.

Professional Memberships

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

Language Experience

  • Bash
  • C, C#, C++
  • Java, Scala, Clojure
  • JavaScript, jQuery, PHP
  • Python, Ruby

Extracurricular Activities

University of Georgia

  • UGA ACM – UGA Chapter of the Association for Computing Machinery
    • Vice Chairman (Fall 2008)
    • Vice Chairman (Spring 2009)
    • Vice Chairman (Fall 2009)
    • Vice Chairman (Spring 2010)

Graduate Computer Science Courses Taken

University of Georgia (GPA: 4.0)

  • CSCI 8380 – Advanced Topics in Information Systems (Dr. Arpinar) (Spring 2012) (IP)
    • 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 6950 – Directed Study in Computer Science (Dr. Miller) (Spring 2012) (IP)
  • 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 6610 – Automata and Formal Languages (Dr. Canfield) (Spring 2012) (IP)
    • 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 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. (PDF) (PPT)
    • 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. (PDF) (PPT)
    • 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. (PDF)
  • CSCI 6050 – Software Engineering (Dr. Kochut) (Fall 2011) (A)
    • Carrello: For out 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)
  • 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).
  • 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.