Undergraduate Level 400 Courses
Programming Language Design
Prerequisites: CIS 360
Fundamental concepts and general principles underlying current programming languages and models. Topics include control and data abstractions, language processing and binding, the relationship between language design and language implementation. A variety of computational paradigms are discussed: functional programming, logic programming, object-oriented programming, and procedural programming
Seminar
Prerequisites: Senior CIS standing Advanced topics in Computer Science.
Artificial Intelligence
Prerequisites: CIS 360 or permission of instructor
Artificial intelligence problem-solving paradigms. The course covers heuristic versus algorithmic methods, rational and heuristic approaches, and description of cognitive processes; and objectives of work in artificial intelligence, the mid-brain problem and nature of intelligence, simulation of cognitive behavior, and self-organizing systems. Examples are given of representative applications.
Introduction to the Theory of Computing
Prerequisites: CIS 361
3 hours lecture
Several of the most significant models of computation will be reviewed, i.e., Turing machines, 1-calculus, predicate calculus. The traditional undecidibility results will be covered, along with the attempts to overcome the resulting limitations in restricted situations. Mechanical theorem provers will be considered. The resolution and unification predicate calculus methods will be discussed along with appropriate PROLOG programming assignments. The Boyer-Moore approach will be discussed, along with LISP programming assignments.
Design of Parallel Algorithms
Prerequisites: CIS 360 or permission of instructor
3 hours lecture, 2 hours laboratory
Design and analysis of algorithms for parallel computers with two modes of operation: shared memory, and message passing. Synchronous and asynchronous parallel algorithms for the following problems will be designed and implemented: selection, merging, sorting, searching, generating permutations and combinations, and matrix operations. Parallel computational complexity of these algorithms will be analyzed.
Data Mining and Knowledge Discovery
Prerequisites: CIS 360
Designed to provide students with a solid background in data mining and knowledge discovery concepts, tools, and methodology, as well as their applicability to real world problems. A variety of data mining techniques will be explored including memory-based reasoning, cluster detection, classification, neural networks, and finding understandable knowledge in large sets of real world examples. Some related topics such as web and multimedia mining will be discussed. Students will gain hands-on experience in data mining techniques using various data mining software packages and tools.
Human-Computer Interaction
Prerequisites: CIS 362 or permission of instructor
3 hours lecture; 3 hours laboratory
Theory and principles for constructing usable software systems. Cognitive and effective aspects of users. The impact of user characteristics on design decisions. The construction and evaluation of the user interface. Sensory and perceptual aspects of interfaces, task structure, input modalities, screen layout, and user documentation. Individual concerns for systems such as personal productivity tools, real-time control systems, instructional software, and games.
Database Systems
Prerequisites: CIS 280
Use of DBMS software in the development of an information system. Overview of the ANSI/SPARC Study Group on Database Management Systems model. Relational database model techniques. Emphasis on user views necessary to support data management and retrieval.
Computer Graphics
Prerequisites: At least junior CIS standing Graphics devices.
Two dimensional and three dimensional image representations and transformations. Graphics systems software architecture; graphics standards; packages.
Bioinformatics
Introduction to the field of bio-informatics. This course addresses the analysis of information present in biological systems. This course presents an overview of the applications of computing technologies such as analysis of protein sequence, pattern matching, bio-modeling and simulation, and biological data visualization. It also provides algorithms and methods on a selection of computational problems as well as hands-on experience with tools and data.
Computer Game Design
Science, technology, and art involved in the creation of computer games. A variety of software technologies relevant to games including programming languages, scripting languages, networks, simulation engines, and multimedia design systems are discussed along with underlying scientific concepts from computer science and related fields including simulation and modeling, graphics, artificial intelligence, real-time processing, and game theory. The art and design principles for developing usable and engaging games including software engineering, human computer interaction, thematic structure, graphic design, choreography, music and sound effects, and game aesthetics are introduced and compared.
Topics in Computer Vision
Prerequisites: CIS 360 or permission of the instructor
Foundations of computer vision. Image formats, projection models, regions, filters, edge detection, segmentation, shape description and representation, object recognition and understanding, and stereo-vision are discussed.
Image Analysis and Processing
Prerequisites: CIS 360 or permission of the instructor
Fundamentals in image analysis and processing. Topics in image processing such as display and filtering, image restoration, segmentation, compression of image information, warping, morphological processing of images, wavelets, multi-resolution imaging and unitary transforms are discussed.
Compiler Design
Prerequisites: CIS 361
Organization of a compiler including lexical and syntax analysis, symbol tables, object code generation, error detection and recovery, code optimization techniques, and overall design. Compilation techniques and run-time structures in block-structured language
Computer Networks
Prerequisitess: CIS 370
Topology of computer networks. Physicaltransmission. Error handling. Protocols.Satellite, packet radio, and local networks.Network interconnection. Security.Applications of computer networks.
Network Programming
Prerequisites: CIS 370
Introduction to computer networks, and methods for programming network services and applications. The course covers the Internet protocol suite (e.g. IP, TCP, UDP), socket programming, and client-server design (e.g. connectionless, connection oriented, multiprotocol). The course discusses the implementation of real-time applications (e.g. streaming audio and video), and application -level gateways and tunneling. In addition, the course addresses protocol implementation using routing sockets and raw sockets. Programming projects represent a significant component of the course.
Computer and Information System Security
Introduction to computer and information system security. This course introduces the threats and vulnerabilities in computer and information systems. This course covers elementary cryptography, program security, security in operating systems, database security, network security, web and e-commerce security. It also covers the administration, legal, ethical, and privacy issues in computer security.
Software Engineering
3 hours lecture; 2 hours laboratory
Software engineering models and processes; total quality management. The course will address the technical, logistical, and social issues associated with the software development process. It will cover the issues of total quality management at the team and enterprise levels.
Note: Some graduate courses may be open to undergraduates. Please consult your department chairperson. See the Graduate Catalogue for graduate general and program requirements.
Parallel and Distributed Software Systems
Parallelism and distribution of processing; software bus concept; patterns in software design. The course provides an in-depth discussion of the software systems wit multiple processes and of the relationship between concurrency and distribution of processes. The concept of the software bus, the existing standards, and the issues associated with their implementation are covered.
