Skip to main site navigation
Skip to main content
Switch to text-only view
Switch to default view

COMPUTER AND INFORMATION SCIENCES

Undergraduate Courses

Click Here to View the Prerequisite Hierarchy

C101 - Computer Programming I (4 cr.)  ( Test-out Option

P: MATH-M 014 or equivalent or a Level III on the Math Placement exam. Fundamental concepts of computer programming, algorithm development, and data structuring. The programming language used will be C++. Not open to students who have taken C201.

C151 - Multiuser Operating Systems (2 cr.) ( Test-out Option

P: C101.  Survey of the operating system facilities and commands.  Installation and maintenance of operating systems such as Linux. Understanding process management, file systems, memory and virtual memory management issues.  Understanding networking and its role in modern computing environment.  Operating system security. Writing shell scripts and batch files.

C201 - Computer Programming II (4 cr.)

P: C101. Fundamental forms and concepts of computer science, including top-down design, data structures, structured control flow, modular programming, object-oriented programming, recursion, and standard algorithms. Programming language concepts will be illustrated with C++.

C243 - Introduction to Data Structures (4 cr.)

P: C151, C201, MATH-M 125 or above.  (C151 can be taken concurrently with C243.)  Abstract data types and their implementations using various structures and algorithms; elementary algorithm analysis; space/time trade-offs; sorting and searching; finite graph algorithms.

C250 - Discrete Structures (3 cr.)

P: C101, Math-M 125 or above. Mathematical foundations of computing including: set theory, propositional and predicate logic, arguments and patterns of inference, proofs of correctness and mathematical induction. Formal logic, argumentation and verification (proof) are also examined in the context of every day critical thinking.

C251 - Foundations of Digital Computing (3 cr.) 

P: C243 and a course in calculus. Mathematical foundations of computing, including mathematical induction, propositional logic, proofs of correctness, Turing machines, computability, and the halting problem.

C308 - System Analysis and Design (4 cr.) 

P: C243. Software development life cycle; structured top-down and bottom-up design; data flow diagramming; entity relationship modeling; study of computer aided software engineering; I/O design and validation; file and database design; design of user interfaces; comparison of structured vs. object oriented design. A team project will be completed.

C311 - Organization of Programming Languages (3 cr.)

P: C243 and C335. Design and implementation of programming languages: syntax; semantics; comparison of programming paradigms such as imperative, functional, logic, and object-oriented. Implementation of concepts such as binding, scope, looping, branching, subprograms and parameter passing, tasks and concurrency, heap management, exception handling, templates, inheritance, overloading.

C335 - Computer Structures (4 cr.)

P: C201. Computer architecture and machine language; internal data representation; symbolic coding and assembly systems; macros; program segmentation and linking; I/O devices; serial communication. Projects to illustrate basic machine structure and programming techniques.

C435 - Operating Systems (4 cr.) 

P: C243, C335, and three other computer science courses above the level of C243.  Design and implementation of operating systems: the process model, process synchronization, semaphores, deadlock management, multi-tasking, multi-threading, interprocess communication, process scheduling, memory management, paging, segmentation, virtual memory management, file system design and implementation, I/O device drivers, interrupt handlers and spoolers. Students will complete the design and implementation of a simulated multi-tasking operating system.

C442 - Database Systems (3 cr.) 

P: C308. The fundamental concepts, theory, and practices in the design and implementation of database management systems: data independence; data modeling; entity relationship modeling; functional dependencies; normalization; relational, hierarchical, network, and object oriented data models; relational algebra; relational calculus; data definition and manipulation languages; recovery; concurrency; security; integrity of data.

C455 - Analysis of Algorithms (3 cr.) 

P: C243, MATH-M 260. R: C251. Mathematical analysis of time and space requirements for algorithms, using combinatorics, recurrence relations, and elementary probability theory. Advanced graph algorithms. Tractable and intractable problems.  Credit not given for both C455 and B503.

C463 - Artificial Intelligence (3 cr.)

P: C251. R: C311. Techniques and principles of artificial intelligence and implementations of some of these techniques. Various formalisms for representing knowledge, and relationships of this to such tasks as inference, game playing, and planning. Machine learning.  Credit not
given for both C463 and B551

C490 - Seminar in Computer Science (1-3 cr.)

P: Consent of instructor. Special topics in computer science. Recent topics have included Embedded Systems, Game Programming and Design, Biomorphic Computing, Computer Security, Advanced Java Techniques.

Y398 - Internship - Professional Practice (3 cr.) More information

P: C308, C335, and one other computer science course above the level of C243. Enrollment requires that the student be accepted as a temporary employee of an organization or business. The work must offer the student challenging computer experience in a closely supervised position. The student will report weekly to the faculty member in charge. Prior approval of the position is required.

B100 - Problem Solving Using Computers (4 cr.)

This course introduces problem solving techniques, critical thinking skills, algorithm development and computer programming using real-world problems. Topics include: computer literacy, hardware, data representation, structured and object-oriented programming techniques, modularity and reusability, and testing an debugging techniques.

B401 - Fundamentals of Computing Theory (3 cr.)

P: C243, C250. Fundamentals of formal language theory, computation models and computability, the limits of computability and feasibility, and program verification.

B424 - Parallel and Distributed Programming (3 cr.)

P: C243, MATH-M 301.  (With permission of the instructor, M301 may be taken concurrently with B424.)  Overview of parallel computers, shared memory, message passing, MIMD and SIMD classifications.  Understanding and use of message passing and synchronization facilities such as MPI.  Study of parallel programming models such as master-slave, client-server, tast-farming, divide-and-conquer and pipelining.  Performance analysis of parallel systems, execution time, time complexity, load balancing and scalability.  Credit not given for both B424 and B524.

B438 - Computer Networks (3 cr.) 

P: C243, C335.  Fundamental concepts and technologies used in design of computer networks.  Architecture and design philosophy of Internet and basic performance issues.  Low-level technologies like Ethernet and wireless.  Packet switching and virtual circuits.  Core protocols of the
Internet, such as TCP and IP.  Error control, congestion control, and routing.

B451 - Security in Computing (3 cr.) 

P: C335.  An introduction to computing security to include confidentiality, integrity, and availability triad, cryptography, software security, operating system security, trusted operating systeme design and evaluation, authentication, network threats and defenses, security management, legal aspects of security, privacy and ethics. 

B481 - Interactive Computer Graphics (3 cr.) 

P: C243, MATH-M301. (M301 may be taken concurrently with C481.) Computer graphics techniques.  Introduction to graphics hardware and software.  Two-dimensional graphics methods, transformations, and interactive methods.  Three-dimensional graphics, transformations, and
viewing geometry.  Three-dimensional modeling and interactive manipulation methods.  Basic lighting and surface shading.  Introduction
to video and animation methods.  Credit not given for both C481 and B581.

Graduate Courses

A504 - Introductory C++ Programming (2 cr.) 

P: Programming Experience. Fundamental concepts of computer programming, algorithm development, and data structuring. The programming language used will be C++.  Credit not   given for both A504 and C101. (Undergraduate computer science majors should take CSCI-C101.)

A506 - Object-Oriented Programming in C++ (2 cr.) 

P: A504 or C101. Topics include objects, classes, encapsulation, inheritance, polymorphism, templates and exceptions. Credit not given for both A506 and C201. (Undergraduate computer science majors should take CSCI-C201.)

A593 - Computer Structures (3 cr.) 

P: A506 or C201. Computer architecture and machine language; internal data representation; symbolic coding and assembly systems; macros; program segmentation and linking; I/O devices; serial communication. Projects to illustrate basic machine structure and programming techniques. Credit not given for both A594 and C335. (Undergraduate CS majors should take C335.)

A594 - Data Structures (3 cr.)

P: A506 or C201. R: C151 Abstract data types and their implementations using various data structures and algorithms; advanced features of C++; elementary algorithm analysis; space/time trade-offs; sorting and searching; introduction to object oriented design and programming; software engineering principles. Credit not given for both A594 and C243. (Undergraduate CS majors should take C243.)

B503 - Algorithms Design and Analysis (3 cr.) 

P:  A594 or C243;  MATH-M 260 or M365 or M463.  Models, algorithms, recurrences, summations, growth rates. Probabilistic tools, upper and lower bounds; worst-case and average-case analysis, amortized analysis, dynamization. Comparison-based algorithms: search, selection, sorting, hashing. Information extraction algorithms (graphs, databases). Graph algorithms: spanning trees, shortest paths, connectivity, depth-first search, breadth-first search.  Credit not given for both C455 and B503.

B524 - Parallelism in Programming Languages and Systems (3 cr.) 

P: A594 or C243, MATH-M 301.  (With permission of the instructor, M301 may be taken concurrently with B524.)  Overview of parallel computers, shared memory, message passing, MIMD and SIMD classifications.  Understanding and use of message passing and synchronization facilities such as MPI.  Study of parallel programming models such as master-slave, client-server, tast-farming, divide-and-conquer and pipelining. Performance analysis of parallel systems, execution time, time complexity, load balancing and scalability.  Graduate project.  Credit not given for both B424 and B524.

B538 - Networks and Distributed Computing (3 cr.)

P: B438;  R: C435.  Advanced concepts and technologies of computer networks. Protocols and protocol stacks. Client-server models.
Distributed object technology. High-performance and high-bandwidth techniques. Distributed operating systems.

B551  - Elements of Artificial Intelligence (3 cr.)

P: C251. R: C311  Introduction to major issues and approaches in artificial intelligence. Principles of reactive, goal-based, and utility-based agents. Problem-solving and search. Knowledge representation and design of representational vocabularies. Inference and theorem proving, reasoning under uncertainty, and planning. Overview of machine learning.  Graduate project.  Credit not given for both C463 and B551.

B553 - Biomorphic Computing (3 cr.) 

P: Permission of the instructor.  Biologically-inspired approaches to the design of intelligent systems. Distributed and perceptually-grounded representations. Temporal processing. Neural-network approaches to vision and natural language processing. Evolutionary computation. Additional topics may include an introduction to analogy computing, dynamical systems, and artificial life.

B561 - Advanced Database Concepts (3 cr.) 

P: C442.  Database models and systems: specially relational and object-oriented; relational database design theory; structures for efficient data access; query languages and processing; database applications development; views. Transaction management: concurrency and recovery.

P565 - Software Engineering I (3 cr.) 

P: 308.  Analysis, design and implementation of software systems. Requirements specification: data and process modeling. Software design methodologies. Software quality assurance: testing and verification. Software development processes.

B581 - Advanced Computer Graphics (3 cr.) 

P: A594 or C243;  MATH-M 301.  (M301 may be taken concurrently with B581.)  Introduction to graphics hardware and software.  Two-dimensional graphics methods, transformations, and interactive methods.  Three-dimensional graphics, transformations, viewing geometry, object modeling and interactive manipulation methods.  Basic lighting and shading. Video and animation methods.  A sampling of research papers and a project in computer graphics form a substantial portion of this course. Credit not given for both C481 and B581. 

B582 - Image Synthesis (3 cr.)

P:  B581 or C481.  Raster image display: color theory, gamma correction, and filtering. Advanced shading methods: local illumination models, global illumination models. Surface display, including ray tracing and Z-buffering. Solid modeling; spline surfaces, CSG, superquadrics, and deformations. Scientific visualization: isosurfaces and volume rendering. B583 – Game

B583 - Games Programming and Design (3 cr.) 

P: recommended B581 or C481. Programming techniques and data structures for game implementation, elements of game design, current trends in the game industry, game theory, social aspects, and elements of artificial intelligence in games.

B649 - Topics in Systems (1-6 cr.)

P: Instructor's permission. Special topics in systems. May be repeated for credit with permission.

B651 - Natural Language Processing (3 cr.)

P: B551 or C463. Theory and methods for natural language processing. Algorithms for sentence parsing and generation. Context-free and unification grammars.  Question-and-answer systems. Analysis of narratives. Finite-state approaches to computational phonology and morphology.  Machine translation. Machine learning of natural language. Speech recognition. Neural-network and statistical alternatives to symbolic approaches.

B657 - Computer Vision (3 cr.)

P: C463 or B551. Concepts and methods of machine vision as a branch of artificial intelligence. Basics of digital image processing. Local and global tools for deriving information from image data. Model-based object recognition and scene understanding.

B661 - Database Theory and Systems Design (3 cr.)

P:  Permission of the instructor.  Database models: relational, deductive, complex-object, object-oriented. Query languages: relational algebra and calculus, datalog, fixpoint logics, object-oriented query languages. Transaction management theory: concurrency control, recovery, distribution. Post-relational and object-oriented database systems.

B689 - Topics in Graphics and Human Computer Interaction (1-6 cr.)

P: Permission of the instructor. Special topics in graphics and human computer interaction. May be repeated for credit with permission.

Y790 - Graduate Independent Study (1-6 cr.)

Independent study under the direction of a faculty member, culminating in a written report. May be repeated for credit. R grade not allowed. The different departmental options for independent study are: Research and Reading, Software System Development, Master's Research Project, Master's Software Project, and a University Master's Thesis.

Y798 - Professional Practicum/Internship (Non-credit.)  Requirements

P: current enrollment in CS graduate degree program. Provides for participation in graduate level Professional Training and Internship experience.