Math Made Clear


Local   (212) 290-0400   Toll Free   (800) 643-8019 

We Are Open 7 Days a Week 8 am - 9 pm EST

Get Tutored In-Person, One-on-One in New York City

or Online  - Anywhere in the World
Lessons and Tutoring for High School and College Students in Mathematics, Science and English - Best Tutors in NYC
> Graduate
> Undergraduate
> High School
> College Preparation
> Entrance Exam Prep
> Career Counseling

Computer Science Course Descriptions


Foundations of Computer Science

Logic, Sets, functions, relations, asymptotic notation, proof techniques, induction, combinatorics, discrete probability, recurrences, graphs, trees, mathematical models of computation, undecidability.

Introduction to Programming

An introduction to computer programming and problem solving. General topics covered include the fundamentals of programming, good software development practices and solving problems using computer programming. Specific topics include compiling, running and debugging a program, program testing, documentation, variables and data types, assignments, arithmetic expressions, input and output, top-down design and procedures, the random number generator, conditionals and loops functions, arrays, and an introduction to classes and object oriented programming.

Object-Oriented Programming

An intermediate-level programming course teaching object-oriented programming in C++. Pointers, dynamic memory allocation, and recursion. Classes and objects including constructors, destructors, methods (member functions) and data members. Access and the interface to relationships of classes including composition, association, and inheritance. Polymorphism through function overloading operators. Inheritance and templates. The standard template library will be used to introduce elementary data structures and their use.

Data Structures and Algorithms

Abstract data types and the implementation and use of standard data structures. Fundamental algorithms and the basics of algorithm analysis.

Digital Logic and State Machine Design

Combinational and sequential digital circuits. An introduction to digital systems. Number systems and binary arithmetic. Switching algebra and logic design. Error detection and correction. Combinational integrated circuits, including adders. Timing hazards. Sequential circuits, flip-flops, state diagrams and synchronous machine synthesis. Programmable Logic Devices, PLA, PAL and FPGA. Finite-state machine design. Memory elements.

Computer Architecture and Organization

A top-down approach to computer design. Computer architecture: introduction to assembly language programming and machine language set design. Computer organization: logical modules; CPU, memory and I/O units. Instruction cycles, the data-path and control unit. Hardwiring and microprogramming. The memory subsystem and timing. I/O interface, interrupts, programmed I/O and DMA. Introduction to pipelining and memory hierarchies. Fundamentals of computer networks.

Operating Systems

Fundamental concepts and principles of operating systems. Batch, spooling, and multiprogramming systems are introduced. The parts of an operating system are described in terms of their functions, structure and implementation. Basic policies for allocating resources are also discussed.

Introduction to Parallel and Distributed Systems

Basic issues and techniques of parallel and distributed computing. The material we cover will cover the spectrum from theoretical models of parallel and distributed systems to actual programming assignments.

Design and Implementation of Programming Languages

The design of high-level programming languages, along with elements of the compiler technology used to translate those languages into executable code. Formal description of language syntax, parsing, memory management attributes of variables and their binding times, control and data abstraction mechanisms and object-oriented language features. Imperative and object-oriented languages, with brief introduction to functional and logic programming paradigms.

Design and Analysis of Algorithms

Fundamental principles of the design and analysis of algorithms. Asymptotic notation, recurrences, randomized algorithms, sorting and selection, balanced binary search trees, augmented data structures, advanced data structures, algorithms on strings, graph algorithms, geometric algorithms, greedy algorithms, dynamic programming, and NP completeness.

Software Engineering

Software engineering techniques to specify, design, test and document medium and large software systems. Design techniques include information engineering, object-oriented, and complexity measures. Testing methods such as path testing, exhaustive test models, and construction of test data. An introduction to software tools and project management techniques is presented.

Scientific and Engineering Computing

Using programming skills to exploit the broad power of modern computing related to science and engineering disciplines. Computational techniques are taught in parallel with programming and problem solving methodologies. Students learn how to recognize a good or bad formulation of a problem, select the proper algorithm to solve a given computational problem and interpret the results; thus, learning to become intelligent users, rather than creators, of computational software. Computational developments that have the greatest influence on the development and practice of science and engineering in the last century. Course draws upon a variety of computational problems from the breadth of science and engineering to interest students and establishes the relevance of the computational problem solving approach.

Secure Information Systems Engineering

An approach to secure information systems engineering is developed consistent with today’s vulnerabilities, threats and risks. Grounding is established in the basic security technologies and strategies in use today. A concept of security engineering is constructed for whole elements of the critical infrastructure (e.g., utilities, government services, financial services, etc.) including legacy environments, the Internet, wireless and the coming evolution of “ubiquitous computing.” Specifically.

UNIX System Programming

Programming and system administration of UNIX systems. Covers Shell programming, special purpose languages, UNIX utilities, UNIX programming tools, systems programming and system administration.

Assembly Language and Systems Programming

Internal representation of numeric and character data. Machine organization and machine language programming. Assembly language, assemblers. Assembly language programming: branching, arrays, lists, arithmetic and bit manipulation, macros, stacks, subroutines, parameter passing, recursion. Linking and loading, position-independent and reentrant code. Traps and interrupts.

Introduction to Databases

Introduction to database systems and database approach as a mechanism for modeling the real world. The course will cover data models (relational, object-oriented), physical database design, query languages, query processing and optimization, as well as transaction management techniques. Implementation issues, object-oriented and distributed databases will also be introduced.

Algorithms for Parallel and Distributed Systems

Covers the design, implementation and evaluation of algorithms for parallel and distributed systems. Scheduling and load balancing, parallel and distributed information retrieval and database operations, parallel scientific algorithms. Concurrency control. Security in distributed systems.

Java and Web Design

Programmers familiar with C or C++ will learn how to develop Java applications and applets. Syntax of the Java language, object-oriented programming in Java, creating graphical user interfaces (GIU) using the Java 2 Platform technology event model, Java exceptions, file input/output (I/O) using Java Foundation Class threads and networking.

Design and Analysis of Algorithms

Review of basic data structures and mathematical tools. Data structures: priority queues, binary search trees, balanced search trees. B-trees. Algorithm design and analysis techniques illustrated in searching and sorting: heap-sort, quick-sort, sorting in linear time, medians and order statistics. Design and analysis techniques: dynamic programming, greedy algorithms. Graph algorithms: elementary graph algorithms (breadth-first search, depth-first search, topological sort, connected components, strongly connected components), minimum spanning tree, shortest path. String algorithms. Geometric algorithms. Linear programming. Brief introduction to NP-completeness. Advanced design and analysis techniques: amortized analysis of algorithms. Advanced data-structures: binomial heaps, Fibonacci heaps, data structures for disjoint sets, analysis of union by rank with path compression. Graph algorithms: elementary graph algorithms, maximum flow, matching algorithms. Randomized algorithms. Theory of NP completeness and approach to finding (approximate) solutions to NP-complete problems.


Go to the top | Contact us