[ Home ]

[ Work Experience ]

[ Education ]

[ Software Projects ]
[ Writing Projects ]
 
[ Resume pdf txt ]
[ jjsimas@acm.org ]

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