This course served as an introduction to computational thinking using a problem-centered approach. Specific topics covered include: expression of algorithms in pseudo code and a programming language; functional and imperative programming techniques; control structures; problem solving using recursion; basic searching and sorting; elementary data structures such as lists, trees, and graphs; and correctness, testing and debugging. Assignments required a pseudo code solution and an implementation in Python (still basically psuedocode). An end-of-term project was also required.

In CSCI-142, I delved further into problem solving by continuing the discussion of data structure use and design, but now from an object-oriented perspective. Key topics included: more information on tree and graph structures, nested data structures, objects, classes, inheritance, interfaces, object-oriented collection class libraries for abstract data types (e.g. stacks, queues, maps, and trees), and static vs dynamic data types. Concepts of object-oriented design are a large part of the course. Software qualities related to object orientation, namely cohesion, minimal coupling, modifiability, and extensibility, are all introduced in this course, as well as a few elementary object-oriented design patterns. Input and output streams, graphical user interfaces, and exception handling were covered.

At this point in my career I was introduced to the details of program structure and the mechanics of execution as well as supportive operating system features. Security and performance issues in program design were a large part of this course. The program translation process was examined.

In short, this course is an introduction to the hardware and software organization of computer systems. The course emphasized a multilevel model of computer organization. Topics include the digital logic level; the micro architecture level; the machine instruction set level; the operating system level; and the assembly language level.

This course provided an introduction to cryptography (duh), its mathematical foundations, and its relation to security. It covered basic number theory, classical cryptosystems, private-key cryptosystems (including DES and AES), hashing and public-key cryptosystems (including RSA). The course also provided an introduction to data integrity and authentication.

This class was a presentation of the fundamental concepts and theories used in organizing and structuring data. Coverage included the data modeling process, basic relational model, normalization theory, relational algebra, and mapping a data model into a database schema. Structured Query Language was used to illustrate the translation of a data model to physical data organization.

We focused primarily on U.S. policy but also discussed relevant policies in the E.U. and China, as well as international tensions and norms. The central themes of the course was the ways in which technical challenges in security can be influenced by the social, political, economic, and legal landscapes, and what it means to protect against cybersecurity threats not just by writing better code but also by writing better policies and laws.

This course was designed to give an understanding of the role of the system administrator in large organizations. This was be accomplished through a discussion of many of the tasks and tools of system administration. The technologies discussed in this class included: operating systems, system security, and service deployment strategies.

This course was an introduction to wired network infrastructures, topologies, technologies and protocols required for effective end-to-end communication. Basic security concepts were also introduced at the local area network communication level. Networking layers 1, 2 and 3 were examined in-depth using the International Standards Organizationâ€™s Open Systems Interconnection and TCP/IP models. Topics focused on the TCP/IP protocol suite, the Ethernet LAN protocol, and routed and routing protocols common in local area networks. Labs covered the various aspects of communication, management and security on equipment found in industry.

This course discussed the processes and procedures to perform a technical security audit of web servers and web based applications. I not only explored Web Servers and Applications/Services threats, but also applied the latest auditing techniques to identify vulnerabilities existing in or stemming from web servers and applications. I wrote and presented my findings and recommendations in audit reports on web servers and application vulnerabilities.

An investigation of the tasks of selecting, configuring and administering services in an internetworking environment. Topics included the TCP/IP protocol suite, service administration including DHCP, DNS, SSH, Kerberos, and an introduction to directory services. I gained experience in administering, monitoring and securing an internetwork of computers with a variety of these services as well as an understanding of the similarities and differences between protocols in the TCP/IP suite (TCP and UDP).

This was the first in a two-course sequence intended for students majoring in mathematics, science, or engineering. It emphasized the understanding of concepts, and using them to solve physical problems. The course covered two-dimensional analytic geometry, functions, limits, continuity, the derivative, rule of differentiation, applications of the derivative, Riemann sums, definite integrals, and indefinite integrals.

This was the second in a two-course sequence intended for students majoring in mathematics, science or engineering. Again, it emphasized the understanding of concepts, and using them to solve real-world problems. The course covered techniques of integration including integration by parts, partial fractions, improper integrals, applications of integration, representing functions by infinite series, convergence and divergence of series, parametric curves, and polar coordinates.

This course introduced ideas and techniques from discrete mathematics that are widely used in Computer Science. I learned about the fundamentals of propositional and predicate calculus, set theory, relations, recursive structures and counting. This course helped me develop mathematical sophistication and the ability to handle abstract problems.

This course introduced sample spaces and events, axioms of probability, counting techniques, conditional probability and independence, distributions of discrete and continuous random variables, joint distributions (discrete and continuous), the central limit theorem, descriptive statistics, interval estimation, and applications of probability and statistic to real-world problems.

This course covered basic statistical concepts, sampling theory, hypothesis testing, confidence intervals, point estimation, and simple linear regression.

This is a course in calculus-based physics for science and engineering majors. Topics included kinematics, planar motion, Newton’s Laws, gravitation, work and energy, momentum and impulse, conservation laws, systems of particles, rotational motion, static equilibrium, mechanical oscillations and waves, and data presentation/analysis.

This course was a continuation of PHYS-211, University Physics 1. Topics included electrostatics, Gauss’ law, electric field and potential, capacitance, resistance, DC circuits, magnetic field, Ampere’s law, inductance, and geometrical and physical optics.