 |
C101 - Computer Programming I (4 cr.) (
Test-out Option)
Sample syllabus
P: M014 or equivalent. 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.)
Sample syllabus
R: 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.)
Sample Syllabus
P: C101. Fundamental forms and concepts of computer science, including
top-down design, data structures, structured control flow, modular
programming, recursion, and standard algorithms. Programming language
concepts will be illustrated with C++.
C243 - Introduction to Data Structures (4 cr.)
Sample Syllabus
P: C201, C: C151. Abstract data types and their implementations using various
data structures and algorithms; elementary algorithm analysis; space/time
trade-offs; sorting and searching; finite graph algorithms; introduction to
object oriented design and programming; software engineering principles.
NOTE: Students who take C243 prior to Fall 2003 are not required to take
C151.
C251 - Foundations of Digital Computing (3 cr.)
Sample Syllabus
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.
C297 - Sophomore Topics in Computer Science (2-3 cr.) Syllabus
not available
Contents and prerequisites vary from year to year. (This course may count
toward a minor, but not a major.) The department uses this course to present
current and future trends in computing.
C301 - Fortran Programming (1 cr.) No longer offered. Syllabus
not available
P: C201. An introduction to scientific programming using FORTRAN.
Recommended for students in applied mathematics and scientific computing.
C308 - System Analysis and Design (4 cr.)
syllabus
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.)
syllabus
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.) Syllabus
Sample syllabus
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.
Y398 - Internship - Professional Practice (3 cr.)
More information
P: C251, C308, C335. Enrollment requires that the student be accepted as a
temporary employee of an organization or business outside the university.
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.
C421 - Computer Organization (3 cr.) Syllabus
not available
P: C243, C335, Physics P303. Principles of logic design; addressing; central
processing units; microprogrammed versus hardwired control; input-output
organization, interrupts; other topics chosen by the instructor.
B424 - Parallel and Distributed Programming (3 cr.)
Sample syllabus
P: C243, M301. 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)
C431 - Assemblers and Compilers I (3 cr.) Syllabus
not available
P: C308, C311. Analysis and implementation of a compiler for a high level
programming language. Relationship between regular languages, finite
automata, lexical analysis, and scanner generators such as lex. Relationship
between context-free grammars, stack machines, parsers, and parse generators
such as yacc and llgen. Symbol tables and semantic analysis for translating
declarations, expressions, assignments, I/O, control structures, and
subroutines. Large programming project.
C435 - Operating Systems and Computer Architecture (4 cr.)
Sample syllabus
P: C251, C308, C335. R: C311. 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.
B438 - Computer Networks (3 cr.)
Sample Syllabus
P: C243, C335. Theory and practice of data communication between computing
devices. Topics include network architecture and topology, wide-area
networks, local-area networks, and ISO network layers.
C441 - Information Organization & Retrieval (3 cr.) (Was C445) No longer
offered.
Sample syllabus
P: C243. Fundamental structures and algorithms for the management of
secondary storage devices: persistence; shareability; file and database
organization; fields; records; transactions; hardware concepts of storage
devices; sequential, random, indexed, hashed, and B-tree files; operations
on files; search; sort; performance issues.
C442 - Database Systems (3 cr.) (Was C446)
Sample syllabus
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.)
Sample syllabus
P: C251, M209 or M216, and M260 or a comparable probability course.
Mathematical analysis of time and space requirements for algorithms, using
combinatorics, recurrence relations, and elementary probability theory.
Advanced graph algorithms Tractable and intractable problems.
C463 - Artificial Intelligence (3 cr.) Syllabus
Sample syllabus
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.
B481 - Interactive Computer Graphics (3 cr.)
Sample syllabus
P: C243, Math M301. An introduction to interactive programming: design and
implementation of graphical user interfaces (GUI). Fundamentals of modern
interactive graphics: hardware, software, data structures, mathematical
manipulation of graphical objects, algorithms for two- and three-dimensional
graphics. No prior background in graphics is needed, although a good
background in C++ programming and data structures is required. Some
familiarity with computer architecture is assumed.
C490 - Seminar in Computer Science (1-3 cr.) Syllabus
not available
P: Consent of instructor. Special topics in computer science. May be
repeated to earn a maximum of 6 hours.
C490 - PC Techniques (3 cr.) No longer offered.
P: Consent of instructor. Special topics in computer science. May be
repeated to earn a maximum of 6 hours.
C490 - Object Oriented Programming (Advanced Java Techniques) (3 cr.)
Sample syllabus
P: C243. Understanding of object oriented programming concepts. Survey of
basic constructs of the Java programming language. Introduction to Unified
Modeling Language and object oriented analysis and design. Examination of
some advanced facilities provided by the Java language. Facilities such as
graphics and GUI, network programming, multithreading, graphics, animation
and database connectivity will be discussed. Student should be proficient
with C++ language and knowledgeable about data structures and algorithms.
Knowledge of event driven programming, multithreading, and operating system
concepts is a plus. A substantial programming project in Java may be
assigned.
C490 - Introduction to Computer Security (3 cr.)
Sample syllabus
P: C243. This course provides an introduction to topics in computer security
and explores the problems and challenges faced. It covers fundamental issues
and principles, security policies, models and mechanisms related to
confidentiality, integrity and availability triad. Basics of cryptography
and its role in computer security and in particular, authentication will be
covered. It will provide real-world examples of how to apply the principles
discussed.
C490 - Biomorphic Computing (3 cr.)
Sample syllabus
P: C243, Permission of 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.
A504 - Introductory C++ Programming (2 cr.)
Sample syllabus
P: Programming Experience. Topics include aspects of C++ that are not
object-oriented, basic data structures, standard libraries, and Unix tools
for project management. Credit not given for both A504 and either C101 or
C201. (Does not count as computer science credit for CS majors)
A506 - Object-Oriented Programming in C++ (2 cr.)
Sample Syllabus
P: A504. Topics include objects, classes, encapsulation, inheritance,
polymorphism, templates and exceptions. Credit not given for both A506 and
either C201. (Does not count as computer science credit for CS majors)
A593 - Computer Structures (3 cr.)
Sample syllabus
P: C201 or A504, A506. 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.)
Sample Syllabus
P: C201 or C504, C506. 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.)
Sample syllabus
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). Graphs algorithms: spanning trees, shortest
paths, connectivity, depth-first search, breadth-first search.
B524 - Parallelism in Programming Languages and Systems (3 cr.)
Sample syllabus
P: C243, M301. 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)
P536 - Advanced Operating Systems (3 cr.)
Advanced topics in operating systems, such as:
multi-tasking, synchronization mechanisms, distributed system architecture,
client-server models, distributed mutual exclusion and concurrency control,
agreement protocols, load balancing, failure recovery, fault tolerance,
cryptography, multiprocessor operating systems.
B538 - Networks and Distributed Computing (3 cr.)
Basic 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. (Graduate Project)
B541 - Hardware System Design I (3 cr.)
Structured approach to hardware design, emphasizing
hardwired and microprogrammed control. Boolean algebra, hardware building
blocks, architecture and control, implementation issues. In the laboratory,
students build a working computer using hardware prototyping technologies.
Basic training in the use of design and simulation software. Lecture and
laboratory. (Graduate Project)
B551 - Elements of Artificial Intelligence (3 cr.)
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)
B553 - Biomorphic Computing (3 cr.)
Sample syllabus
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.)
Sample syllabus
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.
(Graduate Project)
P565 - Software Engineering I (3 cr.)
Sample syllabus
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. (Graduate Project)
B581 - Advanced Computer Graphics (3 cr.)
Sample syllabus
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. (Graduate Project)
B582 - Image Synthesis (3 cr.)
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 Programming and Design (3 cr.)
Sample syllabus
P: C481 or
B581. Programming techniques and data structures for game implementation,
elements of game design, current trends in 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.)
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.)
Sample syllabus
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.
B659 - Topics in Artificial Intelligence (1-6 cr.)
P: Instructor's permission. Special topics in
artificial intelligence. May be repeated for credit with permission.
B661 - Database Theory and Systems Design (3 cr.)
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.
B669 - Topics in Database and Information Systems (1-6
cr.)
P: Instructor's permission. Special topics in database
and information systems. May be repeated for credit with permission.
B679 - Topics in Scientific Computing (1-6 cr.)
P: Instructor's permission. Special topics in
scientific computing. May be repeated for credit with permission.
B689 - Topics in Graphics and Human Computer Interaction
(1-6 cr.)
P: Instructor's permission. 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.
|