I received a Bachelor of Science
degree in Computer Science and Philosophy [dual major]. My
university GPA was 4.00, my Computer Science GPA was 4.00, and my
overall GPA was 3.85. I selected courses that would best
prepare me for immediate work engineering software. After
graduating I applied to highly ranked Ph.D. programs across the
U.S. I was accepted to 5 programs ranking between 5th and
26th in the US News rankings of CSci Ph.D. programs.
Currently I am a doctorate student under fellowship at the CSci
department of the University of Philadelphia.
Course Name |
Course Description |
Grade Received |
Fundamentals: |
Critical Thinking and
Computer Science |
Overview of the field of
computer science with an emphasis on critical thinking
skills. Problem-solving strategies, algorithm design, and
data abstraction. Introduction to hardware, theoretical
limitations of computers, and issues arising from the
growing role of computers in society. |
A |
Introduction to Programming
and Problem Solving |
Introduction to problem
solving, algorithm development, procedural and data
abstraction; program design, coding, debugging, testing,
and documentation; a high-level programming language. |
A |
Introduction to Data
Structures |
Programming methodology,
program correctness. Review of data types. Data
structures: linear and nonlinear structures, files.
Implementation of data structures. Recursion. Searching
and sorting. |
A |
Algorithms and Data
Structures |
Review of basic data
structures. Graph, search paths, and spanning trees.
Algorithm design and analysis of sorting, merging, and
searching. Memory management, hashing, dynamic storage
allocation. Integration of data structures into system
design. |
A |
Structures of Programming
Languages |
General concepts and
paradigms of programming languages; scope and binding
rules, applications and implementations of language
concepts. Languages selected from: ADA, ICON, Miranda, ML,
MODULA 2, OCCAM 2, PROLOG, LISP, Scheme, SmallTalk. |
A |
Foundations of Computer
Science |
Abstraction, iteration,
induction, recursion, complexity of programs, data models,
and logic. |
A |
Introduction to Finite
Automata |
Strings, languages, and
fundamental proof techniques. Regular expression, regular
grammar, regular languages, finite automata, their
interrelationship, and their properties. Introduction to
context-free languages. |
A |
Software
Engineering: |
Introduction to Software
Engineering |
History, goals, and
motivation of software engineering. Study and use of
software engineering methods. Requirements, specification,
design, implementation, testing, verification, and
maintenance of large software systems. Team programming. |
A |
Software Engineering |
In-depth examination of
techniques for specification, design, implementation,
testing, and verification of software. Human-computer
interfaces. Formal methods of software development. Use of
software engineering tools for the development of
substantial software projects. |
A |
Introduction to the
Mechanics of Formal Methods |
For my senior projected I
produced a twenty page introductory report on the
mechanics of Formal Methods. I read over four
hundred pages of introductory articles on FM and learned
about the application of type theory, theorem proving, and
model checking to formally specifying, verifying, and
validating computer systems especially in the early
lifecycle stages of specification and design. |
A |
Operating
Systems: |
Introduction to Operating
Systems |
Operating system history and
services. File systems. Memory management. Process
management -- concurrent processes, communication,
semaphores, monitors, deadlocks. Resource management --
processor and disk scheduling. Security and protection
mechanisms. |
A |
Systems Architecture |
An in-depth analysis of one
or more operating systems -- system data structures,
hardware architecture, shell and kernel functions, I/O
routines, interrupt handling. Other topics may include
parallel hardware architectures, performance analysis. |
A |
Database
Systems: |
Introduction to File
Processing |
Definition of file
components, access methods, and file operations.
Algorithms for efficient implementation of data
structures; characteristics of bulk storage media for
mainframe and microcomputers. Introduction to database
management systems. |
A |
Database Systems |
Database concepts;
hierarchical and relational network models;
object-oriented data models. Data normalization, data
description languages, data manipulation languages, and
query design. |
A |
Other
Areas: |
Introduction to Computer
Systems |
Instruction sets, data
types, formats, addressing. Register and ALU organization.
Memory hierarchy. I/O. Bus organization. Study of one or
more assembly languages. Basics of implementation of
higher-level languages. |
A |
Introduction to Computer
Organization |
Fundamental issues of
computer design at register-transfer level. Logical design
of basic combinational and sequential modules.
Organization and design of major functional blocks: ALU,
CPU, memory, cache, input/output, hard-wired and
microprogrammed control. Simulation of computer
organization. Introduction to high-performance superscalar
computer organization. |
A |
Computer Graphics |
Hardware devices, raster
graphics, device in dependence, graphic data structure and
representations, interactive techniques, and algorithms
for the display of two- and three-dimensional objects,
graphic transformations, graphics standards, modeling,
animation, VRML and scientific visualization. |
A |
Artificial Intelligence
Programming |
Introduction to
problem-solving methods from artificial intelligence.
Production systems. Knowledge-based systems. Machine
learning. Topics chosen from fuzzy logic, neural network
models, genetic algorithms. Verification, validation,
testing. |
A |
Reasoning
and Analysis: |
Methods of Reasoning |
Principles and methods of good reasoning. Typical
topics: identification of argument structure, development
of skills in deductive and inductive reasoning, assessing
observations and testimony reports, language and
reasoning, common fallacies. |
A |
Advanced Reasoning Skills |
Development of skills in the analysis of arguments,
thinking clearly, and reasoning well. Emphasis on problems
and skills involving language (e.g., clarifying meaning,
handling vagueness, handling verbal component of
disputes), and on inductive inferences in everyday life. |
A |
Symbolic Logic |
An informal treatment of the theory of logical
inference, statement calculus, truth-tables, predicate
calculus, interpretations applications. |
A |
The Foundation and Nature of Logic |
For an independent study course, I studied introductory
texts on the Philosophy of Logic and described a my own
theory of the foundation and nature of Logic. |
A |
Foundations of Knowledge |
Nature, sources, and limits of human knowledge; roles of
perception, reason, testimony, and intuition in acquiring
rational beliefs; e.g. science, mathematics, values, the
arts, religion, social issues, and psychological states. |
A |
The Foundation and Nature of Knowledge |
For an independent study course, I studied may articles
on the Philosophy of Knowledge and described my own theory
of the foundation and nature of Knowledge. |
A |
Mathematics: |
Mathematical Analysis I |
Inequalities, functions, graphs, limits, continuity,
derivatives, antiderivatives, the definite integral, and
applications. Using Mathematica software as an exploratory
tool. |
A |
Mathematical Analysis II |
Transcendental functions, techniques of integration,
improper integrals, conic sections, polar coordinates,
infinite series. Using Mathematica software as an
exploratory tool. |
A |
|