Academics
Computer
Science
|
Core Computer Science Courses
Area |
Course Code
|
Course Name
|
Prerequisites
|
CCS |
101
|
Introduction
to Computer Science
|
x |
x |
|
|
Fundamentals
of computer science are introduced, with emphasis on programming
methodology and problem solving. Topics include basic concepts
of computer systems, software engineering, algorithm design, programming
languages and data abstraction, with applications. A high level
language is fully discussed and serves as the vehicle to illustrate
many of the concepts. Topics include logical data structures (lists,
stacks, queues, trees, etc.). Physical representation of data.
Design and analysis of algorithms operating on the structures
including internal searching, sorting, recursion, and string processing.
The course also covers program specifications, correctness and
efficiency, and techniques for program development and debugging.
C/C++ is used in this course. |
|
|
CCS |
202
|
Current Topics
in Computer Science
|
101
|
x |
|
|
The
study of new and/or advanced topics in an area of computer science
not regularly covered in any other CS course. Introduction to
the concepts of iteration, asymptotic performance analysis of
algorithms, recursion, recurrence relations, string processing,
graphs, automata and logic, and also surveys the main data models
used in computer science including trees, lists, sets, and relations.
Programming assignments are given. Algorithms, programming, debugging;
functions and; abstraction and encapsulation. Correctness: specification,
testing, and proving. Survey of language features. . The precise
topics to be covered, along with prerequisites, are announced
in the semester prior to the offering of the course. |
|
|
CCS |
205
|
Data Structures
and Algorithm Design
|
101
|
105
|
|
|
A
study of advanced programming topics dealing with logical structures
of data, their hardware representation, and the design and analysis
of computer algorithms operating on the structures. This course
concentrates on data structures: primitive types, stacks, queues,
arrays, sets, linked lists, trees, and graphs. Also covered are
some basic operations using these data structures including sorting,
searching and memory management. External sorting, hashing, dynamic
storage allocation, file organizations would be included. |
|
|
CCS |
306
|
Design and Analysis
of Programs
|
205
|
x |
|
|
Algorithmic
paradigms: divide and conquer, greedy algorithms, dynamic programming,
branch and bound. NP-completeness and topics selected from the
following: cryptography algorithms, approximation algorithms,
randomized algorithms, parallel algorithms, lower bounds. Proofs
of program correctness and a survey of mathematical techniques
useful in the analysis and verification of programs. Advanced
topics in data structures and algorithms, including mathematical
induction, analysis and complexity of algorithms, and algorithms
involving sequences, sets, and graphs such as searching, sorting,
order statistics, sequence comparisons, graph traversals, etc. |
|
|
CCS |
403
|
Automata, Logic
and Formal Languages
|
205
|
x |
|
|
Turing
machines; recursive functions; formal languages, theory, grammar;
nondeterministic automata, pushdown automata. An introduction
to theory of logic, automata and formal grammars. Theoretical
models such as finite state machines, push-down stack machines,
and Turing machines are developed and related to issues in programming
language theory and design of computer systems, languages and
algorithms.
A survey of the theoretical bases of computation:
computational complexity (including the classes P and NP) and
formal models of the semantics of programming languages. . Covers
the application of Boolean algebra to design of finite state
machines, formal systems, symbolic logic, computability, halting
problem, Church's thesis, and the main ideas of the theory of
computation. The formal treatment of programming language translation
and compiler design concepts.
|
|