Sophomore Year
Software Engineering
In this class, I led work on a web app with a group of 7 other students for the entire semester, periodically giving presentations and meeting multiple times a week.
Issues involved in developing large-scale software systems.
Models for the software lifecycle; techniques and tools of analysis, design, programming, testing, debugging, and maintenance.
May include formal methods, CASE, expert systems, case studies.
Data Abstraction
Abstract data types and their implementation in an object-oriented environment.
Axiomatic systems describing the classical computer science data structures: stacks, queues, lists, trees, graphs, and the like.
Analysis of the computational complexity of alternative implementation strategies in the context of the typical algorithmic applications.
Functional Languages
An introduction to functional programming.
Functional composition, recursion, and iteration.
Procedure and data abstraction using functions.
Managing state, streams, delayed evaluation, and continuations.
Using functional languages as an analytic notation for reasoning about programs.
Solution of several laboratory problems.
Computer Design
A study of computer organization and design including emphasis on logical design, the role of performance, the structure of instructions, computer arithmetic, processor control, and methods of performance enhancement.
Some attention towards assembly programming.