Course Descriptions

Foundation Courses

CSC    500  Discrete Structures (3675) - 3 credits

Mathematics needed for Computer Science. Topics covered include: functions, relations, propositional and first order predicate logic, set theory, proofs and their construction, counting and elementary probability. The course will use a declarative language as a tool to support concrete implementations of the mathematical ideas.

CSC    501/502 Computer Science I and II (3405/3605) - 3/3 credits

This is an intensive, one-semester, two-course sequence intended to provide students with the necessary background in programming for the graduate program. The use of the computer to solve problems. Students will learn general principles of program design, at first by using libraries of predefined program units, and later, by constructing complete programs. Emphasis is on developing techniques for program design that lead to correct, readable and maintainable programs. Intermediate programming techniques including the use of recursion. An introduction to encapsulated data structures. Lists and list sorting will be used to introduce a discussion of algorithm efficiency.

Core Courses

CSC    550  Object Oriented Design and Data Structures (4005) - 3 credits

The course combines a strong emphasis on Object-Oriented Design principles and design patterns with the study of data structures. Fundamental Abstract Data Types, their implementations and techniques for analyzing their efficiency will be covered. Students will design, build, test, debug and analyze medium-size software systems and learn to use relevant tools. Prerequisite: CSC 502 Computer Science II or permission of the Graduate Director. Corequisite: CSC 500 Discrete Structures.

CSC    551  Design and Analysis of Algorithms (4015) - 3 credits

Concepts of program complexity; basic approaches to complexity reduction: data structures and techniques; worst cases and expected complexity. Topics to be covered may include sorting, set manipulation, graph algorithms, matrix multiplication, and finite Fourier transforms, polynomial arithmetic, and pattern matching. Prerequisite: CSC 550 Object Oriented Design and Data Structures.

CSC    552  Computer Architecture (4025) - 3 credits

Overview of computer system organization, hardware components, and communications. Introduction to boolean algebra, combinational and sequential logic, arithmetic, the CPU, memory, microprocessors, and interfaces. CISC vs. RISC processors. Practical assembly language programming will be the emphasis with an introduction to micro architecture and microprogramming on a variety of processors.

CSC    553  Computer Systems (4035) - 3 credits

An overview of the software required to integrate computer hardware into a functional system. The following topics are covered. Operating systems as resource managers and as virtual machines. System calls, in particular those required for process and file management; interrupt driven systems; concurrency; memory management; file systems and security. Prerequisite: CSC 550 Object Oriented Design and Data Structures or permission of the Graduate Director.

CSC    554  Theory of Computation (4045) - 3 credits

Formal languages, formal grammars, abstract machines; models of computation (e.g. Turing machines); computational complexity (NP completeness); undecideability and uncomputability. Prerequisite: CSC 500 Discrete Structures.

CSC    610  Software Engineering (5105) - 3 credits

(See description in Software Engineering Courses)

CSC    612  Programming Paradigms (5125) - 3 credits

(See description in Free Distribution Courses)

CSC    621  Database Systems (5215) - 3 credits

(See description in Web and Database Technologies Courses)

CSC    680  Artificial Intelligence (5805) - 3 credits

(See description in Free Distribution Courses)

Software Engineering Courses

CSC    610  Software Engineering (5105) - 3 credits

The purpose of this class is to teach the process of developing software. It combines a study of methods, tools, and techniques for creating and evolving software products, with the practical skills needed to deliver high-quality software products on schedule. The methods that are studied include requirements, specification, design, implementation, testing, and maintenance. The course includes a substantial group project. Prerequisite: CSC 550 Object Oriented Design and Data Structures.

CSC    611  Human Computer Interaction (5115) - 3 credits

User models: conceptual, semantic and syntactic considerations; cognitive and social issues for computer systems; evaluating HCI; direct manipulation; the model view controller architecture; widgets and toolkits. Students will design a GUI based application. Prerequisite: CSC 550 Object Oriented Design and Data Structures.

CSC    612  Program Verification (5125) - 3 credits

Symbolic logic and mechanized deduction; program specification; loop invariants; the proof methods of Floyd and Hoare; parallel computations; program semantics. Prerequisite: CSC 551 Design and Analysis of Algorithms.

CSC    613  Software Testing (5135) - 3 credits

A systematic approach to software testing, in context of the software life cycle and as a branch of software engineering, building on students' prior knowledge of software engineering. Through both the breadth and depth of its coverage, the course prepares students to make an effective contribution to software testing as professional software engineers. Prerequisite: CSC 610 Software Engineering.

Web and Database Technologies Courses

CSC    620  Internet Application Development (5205) - 3 credits

This course will attempt to give you experience in designing Internet applications. A student finishing this course should be able to design, implement, and maintain a large community or e-commerce web site. They should leave the course with an understanding of a variety of Internet protocols and markup languages, a knowledge of at least one common scripting tool, an understanding of how to implement a database back-end into a large-scale site, and the ability to critically assess the usability of both their design and the design others.

CSC    621  Database Systems (5215) - 3 credits

This course covers the concepts and structures necessary to design and implement a database management system.  Topics to be covered: data models (entity-relationship and relational), SQL, normalization, storage structures, enterprise applications and database integrity.  Prerequisite: CSC 550 Object Oriented Design and Data Structures.

CSC    622  Advanced Database Concepts (5225) - 3 credits

Topics include stored procedures, triggers, query processing and optimization, web-based enterprise data applications, transaction management, concurrency control, distributed databases, data mining and web mining.  The course includes programming projects involving SQL.  Prerequisite: CSC 621 Database Systems.

CSC    623  Data Communications and Networking (5235) - 3 credits

Topics include mathematical foundations of data communications, logical and physical organization of computer networks, the ISO and TCP/IP models, communication protocols, circuit and packet switching, the Internet, LAN/WAN, client/server communications via sockets, routing protocols, data encryption/decryption and network security issues.  Prerequisite: CSC 550 Object Oriented Design and Data Systems.

CSC    624  Networks and Distributed Systems (5245) - 3 credits

Overview of networks; topologies; ISO levels; routing in networks, local area networks; distributed computing systems; network operating systems; networked databases; future trends. Prerequisites: CSC 553 Computer Systems.

CSC    625  Cryptography and Network Security (5255) - 3 credits

Topics include classical cryptosystems, public and symmetric cryptography, key management, digital signatures, cipher techniques, authentication and federated identity management. Course also covers concepts relating to cryptovirology, malware, viruses, Trojan horses, worms and other types of infectors as they relate to network security. Course includes programming projects. Prerequisite: CSC 550 Object Oriented Design and Data Structures.

CSC    626  Web Technologies (5265) - 3 credits

Topics include organization of Meta-Markup languages, Document Type Definitions (DTDs), document validity and well-formedness, style languages, namespaces, Transformations, XML parsers, Web Services, and Web Security Specifications. Course includes programming projects. Prerequisite: CSC 550 Object Oriented Design and Data Structures.

Graphics and Visualization Courses

CSC    630  Introduction to Graphics (5305) - 3 credits

The course provides an introduction to the principles of computer graphics. The emphasis will be placed on understanding how various elements that underlie computer graphics interact in the design of graphics software systems. Topics include pipeline architecture, graphics programming, 3D geometry and transformations, modeling, viewing, clipping and projection, lighting, shading and texture mapping and visibility determination. A standard graphics API will be used to reinforce concepts and the study of basic graphics algorithms. Students need some proficiency in C language and basic concepts from Linear Algebra. Prerequisite: CSC 550 Object Oriented Design and Data Structures.

CSC    631  Computer Vision (5315) - 3 credits

Computer vision is the science of analyzing images and videos in order to recognize or model 3D objects, persons, and environments. Topics include the underlying image formation principles, extracting simple features like prominent points or lines in images, projecting a scene to a picture, tracking features and areas in images and make a mosaic, making an image-based positioning system, obtaining 3D models from two or more images, and techniques to recognize simple patterns and objects. The class includes programming exercises and hands-on work with digital cameras and laser scanners. Prerequisite: CSC 550 Object Oriented Design and Data Structures.

CSC    632  Interactive 3D Game Development (5325) - 3 credits

This is a technology-based course that uses the latest computer games technology to teach advanced programming, mathematics, and software development. The course is ideal for students with an interest in computer games who plan to seek employment in one of the country's more profitable industries, or students looking for a career in new technologies or software development. The interactive entertainment industry in the US and throughout the world is entering a new phase. New technology platforms are forcing existing development firms to diversify. There are many aspects of game design, development, production, finance, and the distribution process. This course specializes in the programming and technology aspects of the industry. Prerequisite: CSC 550 Object Oriented Design and Data Structures.

CSC    633  Advanced Computer Graphics and Visualization (5335) - 3 credits

The goal of this course is to expose students to advanced techniques in modeling and rendering in computer graphics and visualization.  Topics include parametric curves and surfaces, mesh representation, multiresolution modeling, mesh simplification, ray-tracing, radiosity and volume rendering (iso-rendering and direct volume rendering), anti-aliasing and animation.  Prerequisite: CSC 630 Introduction to Graphics.

CSC    634  Computational Geometry - 3 credits

The course covers design, implementation and analysis of data structures and algorithms for solving geometric problems concerning objects like points, lines, polygons in 2-dimensional space and in higher dimensions.  The course emphasizes the applications of computational geometry.  Topics include overview of geometric concepts, curves and surfaces, data structures for representing solid models, convex hulls, line segment intersection, multi-dimensional data structures (kd-trees, quadtrees and BSP trees), and range searching, point location, triangulations and Voronoi diagrams.  Prerequisite: CSC 551 Design and analysis of Algorithms.

System Security and Management Courses

CSC    640  Advanced Operating Systems (5405) - 3 credits

Network and Distributed Operation systems, Distributed file systems, Loadable devices drivers, Case studies from Linux and Windows.  Prerequisite: CSC 553 Computer Systems.

CSC    641  System Security and Vulnerability (5415) - 3 credits

Students will be introduced to the issues surrounding the construction of high integrity systems.  Case studies of system vulnerabilities will be examined.  Specific topics to be covered include threat analysis: language support for high integrity systems; firewalls and protection policies and mechanisms.  Prerequisite: CSC 550 Object Oriented Design and Data Structures.

CSC    642  System Management and Maintenance (5425) - 3 credits

A course designed to introduce students to the issues and concerns of managing shared systems. Students will manage a small system and explore mechanisms for maintaining data integrity, policies for users, record keeping, and system protection. Prerequisite: CSC 553 Computer Systems.

Free Distribution Courses

CSC    670  Topics in Computer Science (5895) - 3 credits

The course introduces students to recent theoretical or practical topics of interest in computer science.  Content and structure of the course are determined by the course supervisor.  The special topics for a given semester will be announced prior to registration.  With permission of the Graduate Director the course may be taken more than once.  Prerequisite: CSC 550 Object Oriented Design and Data Structures or permission of instructor.

CSC    680  Artificial Intelligence (5805) - 3 credits

The course covers fundamental concepts such as role of logic in reasoning, deductive proofs, and blind and informed search techniques.  Additional topics may include inductive learning, genetic algorithms, decision trees, planning, natural language processing, game trees and perception learning.  Course includes programming projects in a suitable language.  Prerequisite: CSC 550 Object Oriented Design and Data Structures

CSC    681  Programming Paradigms - 3 credits

An exploration of the relationships between computational paradigms and the computer languages that support them. The Lambda calculus and functional programming, resolution and logic based languages, machine based models and imperative languages. The impact of the computational model on program structure and language design. A mid-sized programming project will be used to illustrate the concepts. Prerequisite: CSC 500 Discrete Structures.

CSC    682  Numerical Algorithms - 3 credits

Exposition and analysis of numerical methods for modern computers; review of basic concepts in linear algebra; direct and interactive methods for solving linear and nonlinear problems in numerical algebra; basic problems in approximation theory, numerical differentiation and integration; numerical solutions of different equations; forward and backward error analysis of algorithms; criteria for comparing the efficiency and suitability of numerical methods.  Prerequisite: CSC 500 Discrete Structures.

CSC    683  Information Theory and Coding - 3 credits

Data encoding and transmission; variable length coding; the Kraft inequality for noiseless transmission channels; channel capacity; noise channels and channel capacity; the Shannon coding theorem; algebraic coding schemes.  Prerequisite: CSC 500 Discrete Structures.

CSC    684  Complexity of Computation (5845) - 3 credits

P and NP problems; NP-complete classes; concrete complexity and the P class of combinatorial problems; complexity reduction on graph and string problems; complexity of algebraic computations  Prerequisite: CSC 551 Design and Analysis of Algorithms, CSC 554 Theory of Computation.

CSC    690  Internship (6005) - 3 credits

An approved internship in advanced computer science.

CSC    791  Research Project I (6015) - 3 credits

Supervised independent research mentored by a graduate faculty member.  Prerequisite: GPA of 3.5 and permission of the Graduate Director.

CSC    792  Research Project II (6025) - 3 credits

Supervised independent research mentored by a graduate faculty member.  Prerequisite: GPA of 3.5 and permission of the Graduate Director.

CSC    793  Research Project I/II (6035) - 6 credits

Supervised independent research mentored by a graduate faculty member. Prerequisite: GPA of 3.5 and permission of the Graduate Director.