Education

Technical University of Denmark (2016-2017)

Masters Program in Computer Science and Engineering, returned to workforce with 55/120 ECTS

Study Line: Reliable Software Systems


HAMILTON COLLEGE

Bachelor of Arts Degree, completed December 2011 conferred May 2012

Concentration in Computer Science

Thesis: Contemporary Database Theory

SOUTH CAROLINA GOVERNOR’S SCHOOL FOR SCIENCE AND MATHEMATICS (SC GSSM)

High School Diploma, May 2006

Senior Thesis: Effects of Sense and Anti-Sense Lentiviral Vectors on Audiogenic Seizures in Long Evans’ Rats


COMPUTER SCIENCE COURSEWORK

Master's Program at the Technical University of Denmark

(Descriptions copied from the department website.)


02228 Fault-Tolerant Systems - Groovy, Grails, Gradle, AWS, Jenkins, Spinnaker, LaTex

The course covers the design and development of fault-tolerant systems, where fault-occurrences may lead to financial loss or may have catastrophic consequences. Application areas: safety—space, defense, transport and medical applications; availability—cluster and cloud applications; telecommunication, banking and infrastructure grids, systems-of-systems; reliability—software and hardware design and implementation. Project: the students can choose their own project topic (a large list of suggested topics is available); literature surveys; presentation of existing techniques; tool use on case studies; software and hardware implementations, etc. Passing the course will enable participants to: understand and use the concepts and terminology in the field; understand and evaluate the dependability attributes of fault-tolerant systems, such as safety, reliability and availability; analyze, design and implement fault-tolerant systems.

02239 Data Security - AnB, LaTex

To give students an introduction to fundamental concepts in computer security and introduce central theories and techniques for the development and analysis of secure IT systems. A student who has met the objectives of the course will be able to identify all major factors that have to be addressed in a security analysis of a particular system, define operational security goals for a given computing system, analyse an application scenario and identify common threats, vulnerabilities and risks, identify possible countermeasures against threats and vulnerabilities in a given security scenario, compare and contrast the underlying security mechanisms needed to implement security countermeasures, define operational security policies to achieve specific security goals using specific security mechanisms, design a security infrastructure that implements an operational security policy, use contemporary tools to analyse and implement (part of) a security infrastructure, evaluate (informally) a given set of security policies and mechanisms in a given application context in order to determine whether they are likely to satisfy a given list of security goals, and document their work with the security process in a clear and concise report. Security concepts include: confidentiality, integrity, authenticity, availability etc. Symmetric and asymmetric cryptography and their uses; key distribution and digital signatures; discretionary and mandatory access control policies for confidentiality and integrity. Communication protocols for authentication, confidentiality and message integrity; network security; system security, intrusion detection and malicious code. Security models and security evaluation. Administration of security. Legal aspects of computer security.

02242 Program Analysis - Groovy, Gradle, Antlr4, LaTex

The students will be able to understand and apply basic program analysis formalisms and to construct and apply the analysis tools and techniques facilitated by these formalisms. The course covers techniques for data flow analysis formulated using monotone frameworks. This includes the theoretical foundations within fixed point theory as well as algorithmic techniques for solving constraint systems. The students will be presented for a number of classical program analyses and as a part of the course they will develop a minor verification system for the proactive analysis of a security problem.

02267 Software Development of Web Services - Java, JUnit, Netbeans, BPEL, SOAP, REST

The goal of this course is to understand the basic concepts of Web service technology and the problems and solutions in service oriented architectures. Basic technologies for Web Services like XML, SOAP, WSDL, REST, etc. Problems and solutions in service-oriented architectures, including orchestration and choreography of Web services, long living transactions, security, etc.


Bachelor's Degree at Hamilton College

(Descriptions copied from the department website.)

CS110 Introduction to Computer Science - Python

The first course in computer science is an introduction to algorithmic problem-solving using the Python programming language. Topics include primitive data types, mathematical operations, structured programming with conditional and iterative idioms, functional abstraction, objects, classes and aggregate data types. Students apply these skills in writing programs to solve problems in a variety of application areas. No previous programming experience necessary. (Quantitative and Symbolic Reasoning.)

CS111 Data Structures - C++

A second course in programming, concentrating on the implementation of dynamic structures for data representation. Students will write programs in the C++ programming language which implement the following classic data structures, among others: stacks, lists, queues, hash tables, and trees. Course discussion will emphasize recursion, efficient implementations in terms of memory space and running time, computational complexity of algorithms, and introduction to two important fields of study: searching and sorting. (Quantitative and Symbolic Reasoning.) Prerequisite, 110, or placement by the department

CS210 Applied Theory

An investigation of the nature of computation through development of several models of computation. Topics include finite state machines, pushdown automata and Turing machines, the Chomsky language hierarchy, discussion of computational complexity, and illustration of how these abstract models of computation may be applied to language recognition problems such as lexical analysis and parsing. (Quantitative and Symbolic Reasoning.) Prerequisite, 123; or, senior standing and permission of instructor.

CS220 Principles of Programming Languages (POPL) --- Languages: Python, Prolog, Smalltalk, ML, Perl, Lisp

Investigation into the nature, features, design and implementation of programming languages. Students will gain experience with a wide variety of programming languages through programming exercises. Topics will include, among others, object-oriented programming, functional programming, higher-order functions, type systems and polymorphism. Prerequisite, 111; or, senior standing and permission of instructor.

CS240 Computer Organization - Assembly

A study of the connection between high-level programs and the machines on which they run by means of extensive programming experience using assembly language. Topics will include translation of high-level language idioms into assembly language, number systems and representation schemes, exceptions, interrupts, polling, and an introduction to the structure of the underlying hardware. In the final project, students develop an assembler. Prerequisite, 111; or, senior standing and permission of instructor.

CS307 Topic: Databases - SQL

A study of modern database systems. Topics include data models, query languages, topics in database design, efficiency issues in query processing and database system architecture. Typical activities will consist of design and analysis of parts of a relational database, implementing queries in the SQL language, and time and space analysis of possible database architectures. Theory intensive.

CS330 Algorithms

Discussion of the canon of standard algorithms, with analysis of time and space complexity. Topics will include, among others: sorting, searching and selection; numerical algorithms; string matching; graph algorithms; parallel algorithms; non-determinism and NP-completeness. Theory intensive.

CS340 Operating Systems - C++

Study of the design and implementation of computer operating systems. Students will develop at least four significant projects related to the topics of process scheduling, interprocess communication, memory management, file systems, access control, device drivers and security. Programming intensive. Prerequisite, 240.

CS370 Artificial Intelligence - Lisp

Exploration of AI theory and philosophy, as well as a variety of algorithms and data structures, such as heuristic strategies, logic unification, probabilistic reasoning, semantic networks and knowledge representation. Topics include application areas such as natural language understanding, computer vision, game playing, theorem proving and autonomous agents. Programming intensive. Prerequisite, 220.

CS410 Senior Seminar - LaTex

Practicum in research methods in computer science emphasizing discipline-specific research, writing and presentation techniques. Culminates with writing a substantial, professional survey paper of a current area of computer science research, and a formal presentation of the paper. Prerequisite, 210, 220 and 240.

Phys 245: Electronics & Computers - C

Hands-on introduction to the concepts and devices of electronics. Study of analog and digital circuits, computer architecture, assembler programming and computer interfacing. (Quantitative and Symbolic Reasoning.) (Proseminar.) Six hours of laboratory.