This page lists the courses that are being regularly offered. The full list of courses is in the bulletin.


CSC120 - Computer Programming I (4 credits)
History of computing. Fundamental programming constructs. Algorithms and problem solving. Object-oriented programming. Recursion. Lecture 3 hours, laboratory 2 hours.
Prerequisites: MTH108, or Corequisites MTH140 or MAS110 


CSC210 - Computing for Scientists (3 credits)
Introduction to computing. Computing applications in science. Tools for applications. Algorithms for applications. Implementation of algorithms. Data in science. Storage and retrieval of data. Analysis and visualization of data.
Prerequisites: MTH161

CSC220 - Computer Programming II (4 credits)
Common APIs including list, priority queue, set, and map, and their efficient implementations in an object-oriented language using fundamental data structures. Sorting and other applications of recursion. Combining asymptotic analysis and experiments to extrapolate running times. Using APIs in a software project. Lecture 3 hours, laboratory 2 hours.
Prerequisites: CSC120 or BTE324 or ECE218, MTH108 or MTH140 or MAS110


CSC314 - Computer Organization and Architecture (3 credits)
Digital logic and digital systems. Machine level representation of data. Assembly level machine organization. Memory system organization and architecture. Interfacing and communication. Functional organization. Multiprocessing and alternative architectures.
Prerequisites: CSC220 or ECE218. Corequisites: MTH309

CSC317 - Data Structures and Algorithm Analysis (3 credits)
Basic algorithmic analysis. Algorithmic strategies. Fundamental computing algorithms. Distributed algorithms. Cryptographic algorithms. Geometric algorithms.
Prerequisites: CSC220 or ECE318, MTH309

CSC322 - C Programming and UNIX (3 credits)
C programming: Functions and program structure. Core language elements. Pointer arithmetic. System tools for C programming. Programming for UNIX: The UNIX system call interface. Interfaces to the internet. Scripting.
Prerequisites: CSC220 or ECE318

CSC329 - Introduction to Game Programming (3 credits)
Fundamental issues behind developing a game application. Fundamental programming issues in game design: Software design; Version control; Basic graphics; GUI programming; Networking; Artificial intelligence; Scripting languages; Sound. Large-scale game project: Team development of a functional game; Graphics and GUI component; Networking component; Core game engine.
Prerequisites: CSC220 or ECE318

CSC330 - Android Programming (3 credits)
The Android/Eclipse programming environment. The Android execution model. User interfaces. Media. Data storage areas. Sensors and actuators. The Android market.
Prerequisites: "A" grade in CSC220


CSC40[123] - Computer Science Practicum (1-3 credits)
Implementation of techniques, algorithms, and data structures being taught in a co-requisite CSC course.
Prerequisites: Permission of instructor

CSC405 - Computer Science Seminars (1 credits)
A range of topics in Computer Science, as embodied in the seminars hosted by the Department.
Prerequisites: 12 credits in CSC courses

CSC410 - Computer Science Project Planning (1-3 credits)
Planning for the implementation of a Computer Science project, including: Problem analysis. System architecture design. Algorithm and data structure selection. User interface design. Verification and validation plan. Prototyping.
Prerequisites: Permission of instructor

CSC411 - Computer Science Project Implementation (1-3 credits)
Implementation of a Computer Science project, including: Hardware preparation. Component implementation. System integration. Verification and validation. Documentation.
Prerequisites: Permission of instructor

CSC412 - Computer Science Internship (1-3 credits)
An internship in a commercial computing environment, including interaction with clients, problem analysis, software and hardware design, software implementation, hardware installation, software management, documentation, and user support. Normally 50 internship hours are required per credit earned (the host company must supply documentary evidence of hours worked).
Prerequisites: Permission of instructor

CSC419 - Programming Languages (3 credits)
Overview of programming languages. Fundamental issues in language design. Virtual machines. Introduction to language translation. Models of execution control. Declaration, modularity, and storage management. Programming language semantics. Programming paradigms.
Prerequisites: CSC317 or CSC517

CSC421 - Principles of Computer Operating Systems (3 credits)
Process management. Scheduling and dispatch. Interprocess communication. Memory management. File systems. Device management. Security and protection. System programming for UNIX.
Prerequisites: CSC314, CSC322

CSC423 - Database Systems (3 credits)
Information models and systems. Database systems. Data modeling. Relational databases. Relational database design. Database query languages, Data mining concepts, Web database programming.
Prerequisites: CSC317 or CSC517

CSC424 - Computer Networks (3 credits)
Introduction to computer networks and network applications. The protocol stack. Routing, switching and bridging technologies. Models of network computing. Internet standards and protocols.
Prerequisites: CSC314, CSC322

CSC427 - Theory of Computing (3 credits)
Sets, relations, and languages. Automata theory. Basic computability theory. Turing machines. The complexity classes P and NP.
Prerequisites: CSC220 or ECE318, MTH309

CSC431 - Introduction to Software Engineering (3 credits)
Software processes, requirements and specifications, design, validation, evolution. Project management, tools and environments. Foundations of human-computer interaction. Risks and liabilities of computer-based systems. Intellectual property.
Prerequisites: CSC322 or CSC317 or CSC517

CSC481 - Teaching Assistant Training in Computer Science (1-3 credits)
Teaching assistance training for a specific course, in computer laboratories. May be taken multiple times, assisting maximally twice for a given course.
Prerequisites: Permission of instructor


CSC507 - Data Security and Cryptography (3 credits)
Access, information flow and inference controls. Network security and management. Encryption algorithms. Cryptographic techniques.
Prerequisites: CSC317 or CSC517 or CSC427 or CSC527

CSC528 - Introduction to Parallel Computing (3 credits)
Parallel computing systems. Shared-memory parallel programming, with Open-MP. Distributed-memory parallel programming, with Open-MPI. Applications: Vector and matrix operations, sorting, image processing.
Prerequisites: CSC317 or CSC517

CSC529 - Introduction to Computer Graphics (3 credits)
Geometric objects and transformations. Lighting and shading. Texture mapping. Modeling and hierarchy. Advanced rendering techniques. Graphics card architecture, OpenGL, fragment shader and vertex shader language.
Prerequisites: CSC220 or ECE318, MTH210

CSC540 - Algorithm Design and Analysis (3 credits)
Design techniques, including divide-and-conquer, greedy method, dynamic programming, backtracking. Time and space complexity. Sorting and searching. Combinatorial and graph algorithms.
Prerequisites: CSC317 or CSC517

CSC545 - Introduction to Artificial Intelligence (3 credits)
Fundamental issues in intelligent systems. Search and constraint satisfaction. Knowledge representation and reasoning. Natural language processing. Machine learning and neural networks. Game theory. AI programming.
Prerequisites: CSC220 or ECE318, MTH309

CSC547 - Computational Geometry (3 credits)
Algorithms for solving geometric problems arising from application domains including graphics, robotics, and GIS.
Prerequisites: CSC317 or CSC517

CSC548 - Bioinformatics Algorithms (3 credits)
The complexity of bioinformatics computations. Introduction to perl and bioperl. Pattern matching and sequence homology. Genome assembly. Transcription Factor Binding Site recognition and motif finding. Gene prediction. Phylogeny. Microarray analysis. RNA folding. Gene design and synthesis.
Prerequisites: CSC120 or CSC210, BIL104 or BIL150 or BIL352 or BIL552 or CSC552

CSC552 - Bioinformatics Tools (3 credits)
Databases and tools of bioinformatics, as relevant to research in genomics and molecular biology. Bioinformatics applications. Information retrieval, analytical tools, BLAST searches, promoter analysis, and protein structure-function analysis, and various applications.
Prerequisites: BIL250 or (BIL150 and permission of instructor)

CSC555 - Multimedia Systems (3 credits)
Specification and requirements of a multimedia hardware system, Multimedia data technologies. Graphics file formats. Compression and decompression. Multimedia application development.
Prerequisites: CSC317 or CSC517


CSC609 - Data Security and Cryptography (3 credits)
Access, information flow and inference controls. Network security and management. Encryption algorithms. Cryptographic techniques.
Prerequisites: CSC317 or CSC427

CSC629 - Introduction to Computer Graphics (3 credits)
Geometric objects and transformations. Lighting and shading. Texture mapping. Modeling and hierarchy. Advanced rendering techniques. Graphics card architecture, OpenGL, fragment shader and vertex shader language. 
Prerequisites: CSC220, MTH210 

CSC632 - Introduction to Parallel Computing (3 credits) 
Parallel computing systems. Shared-memory parallel programming, with Open-MP. Distributed-memory parallel programming, with Open-MPI. Applications: Vector and matrix operations, sorting, image processing. 
Prerequisites: CSC317 

CSC640 - Algorithm Design and Analysis (3 credits)
Design techniques, including divide-and-conquer, greedy method, dynamic programming, backtracking. Time and space complexity. Sorting and searching. Combinatorial and graph algorithms. 
Prerequisites: CSC317 

CSC645 - Introduction to Artificial Intelligence (3 credits) 
Fundamental issues in intelligent systems. Search and constraint satisfaction. Knowledge representation and reasoning. Natural language processing. Machine learning and neural networks. Game theory. AI programming. 
Prerequisites: CSC220 or ECE318, MTH309 

CSC647 - Computational Geometry (3 credits) 
Algorithms for solving geometric problems arising from application domains including graphics, robotics, and GIS. 
Prerequisites: CSC317

CSC649 - Bioinformatics Algorithms (3 credits) 
The complexity of bioinformatics computations. Introduction to perl and bioperl. Pattern matching and sequence homology. Genome assembly. Transcription Factor Binding Site recognition and motif finding. Gene prediction. Phylogeny. Microarray analysis. RNA folding. Gene design and synthesis. 
Prerequisites: CSC120 or CSC210, BIL104 or BIL150 or BIL352 or BIL552 or CSC552

CSC656 - Multimedia Systems (3 credits)
Specification and requirements of a multimedia hardware system, Multimedia data technologies. Graphics file formats. Compression and decompression. Multimedia application development. 
Prerequisites: CSC317

CSC670 - Directed Reading of Research (2-4 credits) 
Directed Reading of Research 
Prerequisites:

CSC68[6-8] - Topics in Computer Science (3 credits)
Topics in Computer Science 
Prerequisites:

CSC724 - Mobile Wireless Systems (3 credits) 
Cellular systems. Multiple access techniques. Wireless networking. Mobile IP. Power management. User location information management. TDMA, CDMA, and GSM systems. Data broadcasting. 
Prerequisites: CSC524

CSC732 - Parallel Algorithms (3 credits) 
Parallel computation models. Sorting networks. Parallel algorithms for sorting, searching, graph problems, prefix computation, pattern matching, and fast Fourier transforms. Theory of P-completeness. The class NC. 
Prerequisites: CSC317

CSC749 - Automated Reasoning (3 credits)
Propositional and 1st order logic. Reasoning and resolution. More complex inference rules. Using contemporary ATP systems. Prolog as an ATP system and as a programming language. Applications of ATP in research and industry.
Prerequisites: CSC317 or CSC645

CSC751 - Semantic Web (3 credits)
An overview of the underlying semantic web technologies. Ontology construction and implementation using tools and APIs (logic, XML, RDF, RDFS). Theoretical and practical aspects of knowledge representation (description logic, RDF, RDFS, SPARQL, SROIQ(D)). Designing and debugging ontologies (ontology engineering, entailment tools, project).
Prerequisites: CSC317, MTH309

CSC752 - Autonomous Robotic Systems (3 credits) 
Introduction: autonomous systems, autonomous robots, RoboCup, typical components of an autonomous robot. Modeling: perception, noise, modeling, recursive state estimation, Bayes' filter, particle filter, self-localization. Control and motion: PID-control, calibration of parameters, controlling a wheeled robot, controlling joints, walking motion. Learning (optional, if time permits): overview, different types of learning, reinforcement learning. 
Prerequisites: CSC317, MTH210

CSC756 - Advanced Multimedia Systems (3 credits)
Digital-system fundamentals. Digital audio, analog and digital video. Graphics. Data compression algorithms. CD-ROM technology. Implementation of multimedia software development tools. Architecture and issues for distributed multimedia systems. Multimedia communications systems.
Prerequisites: CSC656

CSC78[5-9] - Advanced Topics in Computer Science (3 credits)
Topics in Computer Science 
Prerequisites:

CSC793 - Research Project (1-6 credits)
Supervised research project preceding dissertation research for the Ph.D.
Prerequisites:

CSC794 - Research Project (1-6 credits)
Supervised research project preceding dissertation research for the Ph.D.
Prerequisites:

CSC810 - Master's Thesis (1-6 credits)
The student working on a master's thesis enrolls for the number of credits as determined by his/her advisor. Credit is not awarded until the thesis has been accepted.
Prerequisites:

CSC825 - Master's Study (0 credits)
To establish residence for non-thesis master's students who are preparing for major examinations. Credit not granted. Regarded as full time residence.
Prerequisites:

CSC830 - Pre-Candidacy Doctoral Dissertation (1-12 credits)
Required of all candidates for the Ph.D. The student will enroll for credit as determined by his/her advisor, but for not less than a total of 12 hours. Up to 12 hours may be taken in a regular semester, but not more than 6 hours in a summer session.
Prerequisites:

CSC840 - Post-Candidacy Doctoral Dissertation (1-12 credits)
Required of all candidates for the Ph.D. who have advanced to candidacy. The student will enroll for credit as determined by his/her advisor, but for not less than a total of 12 hours. Up to 12 hours may be taken in a regular semester, but not more than 6 hours in a summer session.
Prerequisites:

CSC850 - Research in Residence (0 credits)
Research in residence for the Ph.D. after the student has been enrolled for the permissible cumulative total in appropriate doctoral research.
Prerequisites: