Department of Computer Science

Course Descriptions

COSC 502 - Computer Organization

3 Credits

Prerequisites: Graduate Status

Contemporary computer internal architecture and operation are described at various levels, beginning with a summary of digital logic design of memory, buses and processor chips. Topics include: microprogramming, machine language, addressing techniques, interrupts, operating systems, virtual memory and memory management, one-pass and two-pass assemblers, linking and loading, and advanced computer architectures.

 

COSC 503 - Software Design and Development I

4 Credits

Prerequisites: Graduate Status.

Fundamental techniques of computer program development using a high-level language. Topics include assignment, expression, declarations, control statements, arrays, structures, functions and subroutines, block structure, string handling, and programming methodology, including top-down design, structured programming, programming style, and debugging.

 

COSC 504 - Software Design and Development II

3 Credits

Prerequisites: COSC 503 or instructor's permission

Topics include preprocessor facilities, storage control, pointer variables, direct I/0, and recursion.  Data structures, such as stacks, queues, circular lists, linked lists, trees, and graphs. Algorithms for searching, sorting, merging, hashing.  System functions, such as compiling, link editing, and libraries.

 

COSC 514 - Operating Systems I 

3 Credits

Prerequisites: COSC 502 and COSC 504

Introduction to the structure of multiprogramming computer operating systems. Topics include concurrent programming and monitors, process communication and synchronization, process and disk scheduling, deadlocks, memory hierarchies, paging and segmentation. Survey of various processors, performance coprocessors, open systems, O/S security, Unix, and VMS.

 

COSC 516 - Computer Architecture

3 Credits

Prerequisites: COSC 502

Introduction to high-speed computer architecture. Parallel architecture, memory and I/O subsystems. Principles of pipelining and vector processing, pipeline computers and vectorization methods, examples of vector processors. Structures and algorithms for array processors, SIMD and MIMD computers, interconnection networks, associative array processors. Case studies of representative high-speed processors.

 

COSC 517 - Satellite Opr & Control

3 Credits

Prerequisites: Graduate status

This course provides students with a basic understanding of satellite operations and control. Topics to be covered include: orbits, launch vehicle and propulsion spacecraft systems, satellite communications, ground systems, earth stations, flight software and table maintenance, analysis of data.

 

COSC 518 - Computer Graphics I

3 Credits

Prerequisites: COSC 502 and COSC 504

Two-Dimensional (2D) interactive graphics. Basic clipping and scan conversion techniques, 2D homogeneous coordinate system, graphics hardware and software systems, user interfaces, graphics standards, and rendering techniques

 

COSC 522 - Discrete Structures

3 Credits

Prerequisites: Graduate status

This course includes a survey of those areas in mathematics that are particularly useful to computer science. Topics discussed include set theory, relations and functions, equivalence and order relations, digraph and trees, and probability concepts.

 

COSC 523 - Logic Computability & Automata I

3 Credits

Prerequisites: COSC 522 

An elementary development of propositional and predicate logics, set and Boolean algebras with a discussion of Markov algorithms, Turing machines and recursive functions. Topics include post productions, word problems and formal languages.

 

COSC 528 - Design & Analysis of Algorithms 

3 Credits

Prerequisites: COSC 504 and COSC 522

This course includes discussion of design and analysis of basic computer algorithms based on the following techniques: divide-and-conquer, greedy, dynamic programming, tree and graph traversals, backtracking, and branch-and-bound method. Applications to problems, such as sorting and searching, traveling salesman, knapsack, graph coloring, set union-and-find, matrix multiplication, and scheduling.  Use of advanced data structures appropriate for different techniques and problems. Use of mathematical tools, such as big-oh notation and recurrence relations in the analysis of algorithms to NP-completeness and discussion of P=NP question.

 

COSC 531- Database Design

3 Credits

Prerequisites: COSC 504

Introduction to database design and database information management systems. Discussions of the various types of data and information models, such as hierarchical, network, relational, entity-relation, and object-oriented models. Functional dependencies and data normalization. An in-depth look into relational data base systems and query languages.

 

COSC 535 - Information Privacy & Security

3 Credits

Prerequisites: COSC 504

Introduction to security and privacy issues associated with information systems. Technical, physical, and administrative methods of providing security. Identification and authentication. Encryption and management of encryption systems, including key protection and distribution. Cost/risk trade-offs.  Privacy legislation and technical means of providing privacy.

 

COSC 540 Human Factors

Credits: 4

Prerequisites: Graduate Status

Human Factors is about people and their interactions with computers.  This course will introduce the psychological, physiological, linguistic and perceptual factors and fundamental concepts prevalent in the field of human factors.  The advantages and disadvantages of various interaction techniques between humans and technology will be discussed and implemented.  Students will implement a project using Visual Basic.

 

COSC 541 Numerical Analysis I

Credits: 3

Prerequisites: Graduate status

Introduction to the types of problems that require numerical techniques for their solution and examples of error propagation that
arise when applying numerical methods. Topics include solutions of equations in one variable using bisection, fixed-point iteration, Newton Raphson and Muller's methods; interpolation and polynomial approximation; iterative and direct methods of solving linear and nonlinear systems.

COSC 545 - Software Security

3 Credits

Prerequisite: Graduate status

This course teaches principles and practice of secure coding. It provides a sound theoretical background, as well as hands-on experiences through the examination of security resources and standard practices in a specific programming language, such as Java or C++. Programming security, operating systems security are examples of some of the topics that will be covered.

 

COSC 551 - Formal Methods in Programming Languages

3 Credits

Prerequisite: COSC 504

Evolution of some imperative programming languages; formal methods of describing syntax; semantics; data types and variables; assignment statements; control structures; subprograms and their implementation; exception handling; logic programming languages; data abstraction.

 

COSC 554 - Design of Embedded Systems

3 Credits

Prerequisite:  COSC 502

This course presents the basic material required to design and implement embedded systems. Topics covered include single-purpose processors, general-purpose processors, peripheral control, memory use, device interfacing, state machine and concurrent process models, control systems, IC technology, and design technology.

COSC 561 - Compiler Design & Construction I

3 Credits

Prerequisite: COSC 504

Design and implementation of compilers. Semantics and pragmatics as they affect the design of compilers. Topics include: lexical and syntax analysis, parsers, semantics processing, code generation, and simple code optimization.

 

COSC 565 - Software Engineering I

3 Credits

Prerequisites: COSC 504

This course introduces the student to major topics in software engineering such as: requirement specification, analysis and design, testing, project management, and implementation. Additional topics such as software life cycle models, the Unified Modeling Language (UML), agile software development techniques, configuration management, change control, and project documentation will be discussed.

 

COSC 573 - Artificial Intelligence I 

3 Credits

Prerequisites: COSC 528

This course introduces students to the ideas, challenges, techniques, and problems in artificial intelligence. The course will cover both fundamental concepts such as search and knowledge representation, as well as applied work in areas such as planning and vision. Topics covered include basic search, heuristic search, game search, constraint satisfaction, knowledge representation, logic and inference, probabilistic modeling, and machine learning. Students are also exposed to the history and ethical questions related to artificial intelligence. 

COSC 575 - Object-Oriented Programming and Design Paradigm

3 Credits

Prerequisites: COSC 504

Software engineering issues as they relate to object-oriented techniques will be covered. Students will study object-oriented design methodology, and will acquire the ability to analyze a system using object-oriented techniques. Students will learn to enhance maintainability and reusability by the use of encapsulation, inheritance, polymorphism, and other object oriented concepts. Object oriented programming languages, such as Java, C++, and Smalltalk, will be compared and discussed. Advanced topics such as frameworks, components, etc. will be covered.

 

COSC 585 - Computer Communication Networks I 

3 Credits

Prerequisites: COSC 504

Introduction to computer communication and layered network architectures. Encoding and modulation, compression and multiplexing, error detection and correction. Use of the Open Systems Interconnection (OSI) Reference Model as a framework. Review of layered network architecture: design of layered protocols, network topology, switching techniques. Protocols and network design from the physical layer to the application layer.

 

COSC 590-592 - Selected Topics in Computer Science

3 Credits

Prerequisites: Consent of instructor

Presentation of selected modern developments and advanced topics in computer science.