Computer Science Graduate Level Courses
501 FUNDAMENTALS OF DATA STRUCTURES 3 credits
Prerequisite: programming experience in C. Basic data structures and algorithms: stacks, queues, linked lists, trees, hash tables, and graphs; sorting and search algorithms. Introduction to data abstraction and algorithm analysis. (May not be used to meet computer science requirements)
506 INTRODUCTION TO C AND UNIX 3 credits
Prerequisite: Programming experience. C language programming. UNIX shell programming, file structure, system calls, and interprocess communication. (May not be used to meet computer science requirements)
508 WINDOWS PROGRAMMING 3 credits
Prerequisites: 208 or 210 or 406 or 506 or permission. Windows operating systems, integrated development environment, event-driven programming, graphical user interface design, using object libraries, component object model, object linking and embedding, client-server objects.
518 INTRODUCTION TO DISCRETE STRUCTURES 3 credits
Prerequisite: 210 or permission. Introduction to algebraic structures of particular use in computer science. Topics include algorithms and flow chart language, graphs and digraphs, trees, lattices codes. (May not be used to meet computer science master's degree requirements)
521 OBJECT-ORIENTED PROGRAMMING 3 credits
Prerequisite: Admission to Computer Science master's program or permission. Object-oriented design, analysis, and programming using different development models. Comparison with other programming paradigms.
526 OPERATING SYSTEMS 3 credits
Prerequisites: Admission to Computer Science master’s program or permission. Introduction to aspects of all modern operating systems: types; storage management; process and resource control; interacting process synchronization. (May not be used to meet computer science master’s degree requirements)
528 UNIX SYSTEM PROGRAMMING 3 credits
Prerequisites: 316 and knowledge of C. An overview of the UNIX operating system. Shell programming. Process management, processor management, storage management, scheduling algorithms, resource protection, and system programming.
530 THEORY OF PROGRAMMING LANGUAGES 3 credits
Prerequisite: 316. Advanced concepts underlying programming languages and their applications, formal definitions of programming languages, Backus Normal Form, semantics. Alternative programming paradigms including functional programming. (May not be used to meet computer science master's degree requirements)
535 ALGORITHMS 3 credits
Prerequisites: Admission to Computer Science master's program or permission. Design and analysis of efficient algorithms for random access machines; derivation of pattern classification algorithms.
540 COMPILER DESIGN 3 credits
Prerequisites: Admission to Computer Science master’s program or permission. Techniques used in constructing compilers, including lexical and syntactic analysis, parsing techniques, object code generation and optimization. Course requires a compiler implementation project.
545 INTRODUCTION TO BIOINFORMATICS 3 credits
Prerequisites: 316. Introduce major themes in bioinformatics. Topics include concepts of molecular genetics, biological databases, database searching, sequence alignments, phylogenetic trees, structure prediction, and microarray data analysis.
555 DATA COMMUNICATIONS AND COMPUTER NETWORKS 3 credits
Prerequisites: 316 or 401/501. ISO-OSI, TCP/IP, SNA data switching, protocols, flow and error control, routing, topology. Network trends, network taxonomies, and socket-based programming.
557 COMPUTER GRAPHICS 3 credits
Prerequisites: Completion of 316 with a grade of C- or better and knowledge of C. Topics in vector and raster graphics, interactive graphics languages, scan conversion, clipping, geometric transformation, projection, shading, animation, and virtual reality.
560 ARTIFICIAL INTELLIGENCE AND HEURISTIC PROGRAMMING 3 credits
Prerequisite: 316. Study of various programs which have displayed some intelligent behavior. Exploration of level at which computers can display intelligence.
565 COMPUTER ARCHITECTURE3 credits
Prerequisites: 210, 306, 4450:330. An introduction to the hardware organization of the computer at the register, processor and systems level. An in-depth study of the architecture of a particular computer systems family. (May not be used to meet computer science master's degree requirements)
567 MICROPROCESSOR PROGRAMMING AND INTERFACING 3 credits
Prerequisites: 306, 316. Detailed study of a particular microprocessor architecture and instruction set. Standard device interface components. Real time programming concepts.
570 AUTOMATA, COMPUTABILITY AND FORMAL LANGUAGES 3 credits
Prerequisite: 418/518. Presentation of theory of formal languages and their relation to automata. Topics include description of languages; regular context-free and context-sensitive grammar; finite, pushdown and linear-bounded automata; turning machines; closure properties; computational complexity, stack automata and decidability.
575 DATA BASE MANAGEMENT 3 credits
Prerequisite: 316. Fundamentals of database organization, data manipulations and representation, data integrity, privacy.
577 INTRODUCTION TO PARALLEL PROCESSING 3 credits
Prerequisites: 316 and knowledge of C. Commercial processors: past and present. Parallel languages, models of parallel computation. Emphasis on parallel algorithm design and performance evaluation. A broad study of parallel paradigms with relation to real world applications.
580 SOFTWARE ENGINEERING 3 credits
Prerequisite: Admission to Computer Science master's program or permission. Introduction to formal software specification and validation. Introduction of methodologies and tools of design, development, validation, and maintenance.
589 TOPICS IN COMPUTER SCIENCE 1-3 credits
(May be repeated for a total of six credits) Prerequisite: permission of instructor. Selected topics in computer science at an advanced level. (Department consent required for application to computer science master's degree requirements)
591 WORKSHOP IN COMPUTER SCIENCE 1-3 credits
Group studies of special topics in computer science. (May not be used to meet computer science master's degree requirements)
597 INDIVIDUAL READING IN COMPUTER SCIENCE 1-3 credits
(May be repeated) Prerequisite: permission. Computer science major only. Directed studies designed as introduction to research problems, under guidance of designated faculty members. (Department consent required for application to computer science master's degree requirements)
601 RESEARCH METHODOLOGY 3 credits
Prerequisite: Admission to Computer Science graduate program or permission of instructor. Research process overview: literature review, formulation of problems, research design, writing proposals, data collection, data processing and analysis, evaluation, writing reports, and presenting results.
626 ADVANCED OPERATING SYSTEMS 3 credits
Prerequisite: 426/526 or equivalent. Advanced topics in operating system design: synchronization mechanisms, performance evaluation, security, distributed operating systems.
630 ADVANCED THEORY OF PROGRAMMING LANGUAGES 3 credits
Prerequisites: 430/530 and 418/518, or equivalent. In-depth study of various issues in the design and implementation of programming languages, such as formal type systems, operational and other semantics, and verification.
635 ADVANCED ALGORITHMS AND COMPLEXITY THEORY 3 credits
Prerequisite: Admission to Computer Science master's program or permission. Advanced graph algorithms, matrix multiplication, fast Fourier transforms, lower bound theory, complexity hierarchies, NP-complete and intractable problems, approximation techniques.
640 ADVANCED COMPILER DESIGN AND CONSTRUCTION 3 credits
Prerequisite: 440/540 or equivalent. Continuation of 440/540. Theory of LL(k) and LR(k) parsing, compiler writing tools and environments, code optimization, implementation of advanced language features. Major programming project required.
655 COMPUTER NETWORKS AND DISTRIBUTED PROCESSING 3 credits
Prerequisites: 465/565 and 455/555. Interconnection technologies, protocol layering models, datagram and stream transport services, client-server paradigm, principles and protocols of interconnected networks operating as unified systems, and TCP/IP technology.
657 ADVANCED COMPUTER GRAPHICS 3 credits
Prerequisites: 457/557, knowledge of C and UNIX. Topics include 3D viewing and projections, image manipulation, 3D transformations, color shading, clipping and animation via raster files, fractal mapping, surface rendering, and solid mapping.
658 VISUALIZATION 3 credits
Prerequisite: 457 or 557 or permission of instructor. Visualization pipeline, data representation in visualization, visualization algorithms, object-oriented visualization, scientific visualization, volume visualization, visualization applications and research topics.
660 EXPERT SYSTEMS 3 credits
Prerequisite: 460/560 or maturity in mathematics. Architecture of expert systems, knowledge representation and acquisition, inference mechanisms for expert systems, uncertainty management, expert system tools and applications.
665 ADVANCED COMPUTER ARCHITECTURE 3 credits
Prerequisite: 465/565 or equivalent. Fundamentals of computer analysis and design, with emphasis on cost/performance tradeoffs. Studies of pipelined, vector, RISC, and multiprocessor architectures.
670 ADVANCED AUTOMATA AND COMPUTABILITY 3 credits
Prerequisite: 470/570 or equivalent. An in-depth study of concepts related to computability. Topics include nondeterministic automats, recursive function theory, the Chomsky hierarchy, Turing machines and undecidability.
675 ADVANCED DATABASE MANAGEMENT 3 credits
Prerequisite: 475/575 or equivalent. Relational database theory, including formal query languages; query processing and optimization techniques; reliability techniques including recovery, concurrency, security, and integrity; current trends in database technology.
677 PARALLEL PROCESSING 3 credits
Prerequisite: 477/577. Advanced computer architectures, theories of parallel computing, system resources optimization, efficient programming languages and application requirements of cost-effective computer systems. Classical results and practical insights into implementing parallel algorithms on actual parallel machines.
680 SOFTWARE ENGINEERING 3 credits
Prerequisites: 307 and 316. Introduction to current techniques and methodologies used in software design, development, validation, and maintenance.
689 ADVANCED TOPICS IN COMPUTER SCIENCE 1-3 credits
(May be repeated) Prerequisite: permission of instructor. At most, six credits may be applied to degree requirements. Selected topics in computer science at an advanced level. (Department consent required for application to computer science master's degree requirements)
692 SEMINAR IN COMPUTER SCIENCE 1-3 credits
(May be repeated) Prerequisite: permission of advisor. Seminar-type discussions on topics in computer science. No more than two credits apply to major requirements.
695 PRACTICUM COMPUTER SCIENCE 1-3 credits
Prerequisite: graduate teaching assistant or permission. Training and experience in college teaching of computer science under the supervision of an experienced faculty member. May not be used to meet degree requirements. Credit/non-credit.
698 MASTER'S RESEARCH 1-6 credits
(May be repeated) Prerequisite: permission of advisor. Research in suitable topics in computer science culminating in a research paper. No more than two credits applicable to major requirements.
699 MASTER'S THESIS 1-6 credits
Prerequisite: permission. (May be repeated for a total of six credits.) A properly qualified candidate for a master's degree may obtain 2-4 credits for research experience which culminates in presentation of a faculty-supervised thesis.