Computer Science Courses

Computer Science

Computer Graphics
A study of concepts, theory, and algorithmic aspects of two and three dimensional computer graphics.
Topics included:

  • OpenGL
  • Iterative function systems- Sierpinski’s triangle, Koch curves
  • Fractals-Mandelbrot and Juia sets. Attractive and repulsive fixed points
  • Affine Transformations
  • Converting Points to pixels and vice versa
  • Parametric equations and graphing
  • Polyhedra
  • Platonic solids
  • Schlegel diagrams
  • Extruded shapes
  • “Tweening” or morphing
  • Clipping
  • Polygonal mesh – orientation, normal vectors
  • One, two, and three point perspective
  • Dot and cross product of vectors and their uses
  • Shading models

This class included a Final (group) project. My group chose to ceate a scene of trees that shows the change of seasons.
Click
here to view the final project. (Will open in a new window)

Database Management
Topics included:

  • Introductory Concepts:Data models, Data Organization
  • Entity-Relationship (ER) Diagrams
  • Relational Model: concepts, relational algebra, query languages (SQL), Oracle
  • Database Design Concepts: functional dependencies, normal forms
  • System Implementaion: Query processing, transaction processing, concurrency control, recovery concepts

This class included a Final (group) project. My group chose to create a hotel database.
Click here to view the final project. (Will open in a new window)

Data Structures
Concepts and implementations of lists, stacks, queues, trees, graphs, sorting and searching algorithms, hashing, memory management, and advanced data structure applications using object-oriented technology.

Topics included:

  • Linked Data representations: strings, lists, pointers, Strutures
  • Resursion
  • Stacks & Queues
  • Trees and graphs
  • File structures
  • Sorting: Bubble Sort, Insertion Sort, Selection Sort, Shell Sort, Quick Sort, Heap Sort, Bucket Sort
  • Searching

Projects for this class (there were 4 projects in total):
Command Line Calculator
Evaluation Trees

Operating Systems
A course in operating systems with a system software
perspective.

Topics included:

  • Operating System (OS) Concepts: System calls, Processes, Files, The Shell
  • OS Structure: Monolithic, Layered, Virtual Machines, Client-Server Systems,
  • Processes: The Process Model, Implementation of a process, Threads
  • Interprocess Communication: Race Conditions, Critical Sections, Mutual Exclusion with Busy Waiting, Semaphores, Monitors, Message Passing, Classical IPC Problems
  • Process Scheduling: Round Robin, Priority Scheduling
  • Input/Output (I/O): Principles, I/O Devices, Device Controllers, Bus Models, Direct Memory Access (DMA), Principles of I/O Software, Disks, Disk Software, RAM Disks, Floppy Disk handing, Clocks, Clock Hardware/Software
  • Deadlocks: Resources, Principles of Deadlock, The Ostrich Algorithm, Detection and Recovery, Deadlock Prevention
  • Memory Management: Basic management, Swapping, Virtual memory, Page replacement algorithm
  • File Systems: File structure, Directories, File system implementation, Security, Protection mechanisms

Paper: DEC VMS
Project: Write a shell in C to run on MINUX
Project: Write a program to parse command line input

C, UNIX, & Software Design

Topics included:

  • UNIX OS: System calls, VI
  • Object oriented design methodology: system software, application software, software engineering principles, object oriented design
  • C++: objects, classes
  • Object Oriented Managment Systems: Requirements, Analysis, Design

Digital Logic and Computer Organization
Topics included:

  • Number systems: binary, octal, decimal, and hexidecimal number systems, Number system conversions; Negative numbers and complements, Floating number representation and standards
  • Boolean algebra and gate networks, Boolean functions and their simplification, Digital logic gates, Implementation of boolean functions, IC digital logic families
  • Combinational logic, design and analysis procedures, typical combinational circuits, Programmable Logic Array (PLA), Programmable Array Logic (PAL), Field Programmable Gate Arrays (FPGA)
  • Sequential Logic: Flip-flop and clock, registers and register operations,Typical sequential circuits, State diagram and state tables, Design and analysis of sequential circuits
  • Memory systems: Memory hierarchy, Random access memory, Error detection and correction
  • Arithmetic Logic Unit (ALU): Adders, subtractors, multipliers, and dividers, Logic and other operations, Organization of the ALU
  • Control Unit (CU): Micro operations, Control of the CPU, hard-wired implementation, Microprogrammed control

Project:
Circuit to count each time a specific binary number appears.
Consists of 3 types of circuits

  1. Code generator- a four bit counter that outputs the binary sequence (0, 2, 4, 6, 8, 10, 12, 14)dec.
  2. Decoder-For each of the individual binary codes generated, an 8-bit code is genearated, with each bit representing one specific code. For example, 0000 would be represented by 0000 0001, 0001 would be represented by 0000 0010, and so on.
  3. Binary counter- There are 8 binary counters. Each counter is dedicated to a specific code. Each time a code comes up, it is counted by its dedicated counter.

click here to view the circuit diagram.

Computer Science I
An introduction to design and representation of algorithms. Problem solving and programming techniques: top-down analysis and recursion. Emphasizes computer solution of numerical and non-numerical problems using the C programming language.

Topics included:

  • Modularity
  • Header Files
  • Programming style
  • Comments
  • Top Down Program Developement
  • Data Types
  • Declarations
  • Displays
  • Operators
  • Assignments
  • Accumulation
  • Addresses
  • Selection
  • Program control
  • Repetition
  • Macros
  • Selection
  • Relation expressions
  • Compound statements
  • Functions
  • Arrays

Computer Science II
Continuation of CS I. Procedural abstraction, data representation, recursion, and program modularity. File processing, data management, and storage allocation techniques. Abstract data type (ADT) and object-oriented programming techniques. Key concepts in software design. Multidimensional arrays, strings, pointers, and records.

Topics included:

  • Elements of the C programming language
  • Preprocessor directives and program constants
  • I/O operations
  • Formatted input
  • Logical expressions and the IF and WHILE statements
  • Address operator and pointer variables
  • Top-down design with functions
  • function types and the RETURN statement
  • Local and global variables
  • Function prototypes and declarations
  • Parameters, arguments and function calls
  • Preprocessor directives and the C libraries
  • Modular programming
  • Program modules
  • Scope of names and storage classes
  • Header files

Click here to view the final project. (Will open in a new window)

Artificial Intelligence
A study of classical and modern approaches to artificial intelligence including knowledge representation, search strategies, inference systems, logic programming, list processing, machine learning, natural language processing, and neural nets. Exercises in programming COMMON LISP.
Topics included:

  • LISP programming
  • Search techniques
  • Game playing
  • Knowledge representation
  • Knowledge-intensive problem solving
  • Planning
  • Uncertainty
  • Machine learning
  • AI applications: computer vision

Click here to view the final project. (Will open in a new window)

Computer and Assembly Language
Structure of digital computers and machine language. Data representation, instruction formats and addressing techniques. Symbolic coding, assembly systems, and programming techniques. System stack, procedure calls, and program segmentation and linkage. Interrupts and I/O. Memory organization and addressing. Program translation and system programs: Assemblers, compilers, interpreters, preprocessors, linkers, loaders, and debuggers.
Topics included:

  • Number systems & data representation
  • PC hardware
  • Data definition & transfer
  • Machine/assembly language formats
  • DEBUG tool
  • Integer arithmetic
  • Control Structure
  • Subprograms
  • Uncertainty
  • Interrupts and I/O
  • Macro & other instructions

Computer Science Seminar
Current topics in computer sciences are discussed. In this session we discussed the book “Computer Ethics“. I focused my work on privacy issues.

Research paper topic: Particle Systems
Click here to view the final paper. (Will open in a new window)

Discrete Structures
Concepts and implementations of lists, stacks, queues, trees, graphs, sorting and searching algorithms, hashing, memory management, and advanced data structure applications using object-oriented technology.
Topics included:

  • Logic
  • Set Theory
  • Functions
  • Sequences and summations
  • The growth of functions and complexity of algorithms
  • Congruences and Euclidean algorithms
  • Matrices
  • Mathematical Reasoning
  • Counting: Permutations and Combinations, Probability
  • Relations
  • Graphs and Trees
  • Boolean Algebra

Programming Languages
Design issues relevant to the implementation of programming languages. Topics include in-depth study and comparison of mechanisms for sequence control, data structure implementation and run-time storage management; conceptual study of programming language syntax, semantics, and translation; survey of major programming paradigms including procedural, functional, object-oriented, and logical; introduction to language constructs that support distributed and parallel computing.

Project: Write a program in a language we have never used before. I chose Pascal. (will open in new window)

Design and Analysis of Algorithms
An introduction to the concepts, methodologies, and constructive models for formulating algorithms. Use of analytic techniques to determine the relative efficiency of algorithms with respect to several measures such as time and space complexity. Later topics introduce alternate models of computation such as probabilistic algorithms, parallel processing, and complexity classes (such as NP).
Topics included:

  • Tools for Algorithm Desiign, Programming, and Analysis. Java as a Modern Algorithmic Specification Language.
  • Java Examples of Basic Algorithmic Constructs.
    Using timer routines.
    What is Analysis? What to Count and Consider.
  • Empirical Analysis. Program Optimization. Mathematical Background. Rates of Growth.
  • Elementary Data Structures: Strings, Compound Structures, Perspective, & Java OOP Fundamentals
  • Elementary Abstract Data Types.
  • Trees And Recursion.
  • Elementary Sorting. Quicksort. The Basic Algorithm. Performance Characteristics. Mergesort. Priority Queues & Heapsort. Radix Sorting. Bits, Bytes, & Words.
  • Symbol Tables And BSTs.
  • Hashing. Hash Functions.
  • Virtual Memory Perspective (How to Cheat by using the Hardware).
  • Graph Properties and Types. Graph Search. Digraphs & DAGs.
  • Minimum Spanning Trees. Shortest Paths.

Math Courses

College Algebra
An algebra course with emphasis on the logical development of the subject. Topics include: the algebra of fractions; linear equations and inequalities; exponents; radicals and complex numbers; non-linear equations and inequalities; and graphing linear equations, solving systems of equations, conic sections in standard position with centers at the origin, graphs and operations of functions and inverse functions.

Precalculus
This course prepares students for calculus by studying relations, functions and their applications, and graphs. The functions studied include polynomial, rational, exponential, logarithmic and trigonometric functions.

Calculus I
Limit and continuity of functions,derivatives, differentiation of algebraic and trigonometric functions, applications (including related rates and optimization), differentials, antiderivatives; integration, definite and indefinite integrals, Fundamental Theorem of Calculus, numerical integration, applications (area between two curves).

Calculus II
Applications of the integral. Derivatives and integrals of logarithmic, exponential, inverse trigonometric and hyperbolic functions. Techniques of integration. Infinite series and introduction to the approximation problem with Taylor polynomials.

Linear Algebra
An introductory course in the theory of linear transformations and vector spaces. Topics include: systems of equations, matrices, determinants, inner product spaces, eigenvalues and eigenvectors.

Probability and Statistics
A mathematical treatment of probability as well as statistics. Topics include probability axioms, discrete and continuous sample spaces, random variables, mathematical expectation, probability functions; densities, basic discrete and continuous distribution functions; functions of random variables and their distributions. Also covered is Central Limit Theorem, confidence intervals, hypothesis testing and Linear regression. Software such as SAS or Minitab will be used for testing and regression problems.