Undergraduate Level 100 Courses
Computer Literacy
An introduction to computers, evolution of computer systems and the impact of computers on the society. In this hands-on laboratory course, students will use Macintosh computers to learn about components of computer systems and study various applications including word processing, spreadsheet, database, presentation and internet browsing software. With the HyperCard, students will learn how to design and program in the multimedia environment. Each student will then use this knowledge to develop an individual final project for the course.
Algorithm development, syntax and semantics of the C programming language stressing computer systems concepts. Concepts of the machine model, procedural programming and program development including coding, debugging and testing of programs are covered. The use of libraries, header files and macros are covered. Engineering examples are used. Variables, operators, control, input/output, arrays, structures, functions, pointers and files are covered using engineering examples.
Computer Programming with C
2 hours lecture; 2 hours laboratory
Algorithm development, syntax and semantics of a high level programming language, debugging and verification of programs. Concepts of structured programming. Arrays, subroutines. Elementary system concepts (compilation, time-sharing).
Web Page Development
An introduction to the theory and application of creating web pages using HTML and JavaScript. HTML is the underlying structure used by the World Wide Web and will be used in this course along with JavaScript to assist students in building a foundation to become proficient in designing web pages. The primary theme of the course is learning how to create web pages that are attractive, meaningful, and well designed. Assessment of achieving these goals also will be addressed. As time allows, DHTML (Dynamic HTML), XML and Java applets may be used.
Exploring Computer Programming with Animation
2 hours lecture; 2 hours laboratory
Introduction to computer science and programming. Topics include basic program design and implementation process, simple data types, control structures, introduction to algorithms, debugging techniques, object-oriented and event-driven programming concepts. The course introduces object-oriented design, good software engineering principles and helps the development of fundamental programming skills. The design and the implementation of animation projects in 3D virtuel worls are used as teaching and learning tools in this course.
Computer Programming BASIC
An elementary programming course in the BASIC programming language, designed for the student with no prior experience in data processing.
Object-Oriented Programming I
3 hours lecture; 2 hours laboratory
Basic concepts in programming and introduction to the object paradigm. The course emphasizes concepts of the object paradigm including classes, objects, messages, methods, inheritance, polymorphism and late-binding, and teaches how to design and implement simple programs in an object-oriented language. Basic concepts of efficiency and time complexity, including big-O notation, are introduced. The course also covers the basics of how to use a computer and basic software tools, including libraries of components, in the process of developing programs.
Object-Oriented Programming II
Prerequisite: CIS 180
3 hours lecture; 2 hours laboratory
Software development using advanced object paradigm concepts. This course introduces threads, networking, generic programming, and exception handling. The course covers in depth the advanced topics of object paradigm such as inheritance and polymorphism. These concepts are introduced in the context of developing software using software tools including libraries of components.
Object-Oriented Paradigm
3 hours lecture; 2 hours laboratory
Introduction to the object paradigm. Software development using advanced object paradigm concepts of inheritance and polymorphism. Introduction to concurrency, and faulty tolerance. Developing software using software tools including the libraries of components. Comparison of procedural and object paradigms. Introduction to programming with multiple processes and with exception handling.
Introduction to Procedural Programming
Prerequisite: CIS 180
3 hours lecture; 2 hours laboratory
Procedural Programming in C or C++ under UNIX. Macros, function prototypes, standard libraries, file processing, pointers, and dynamic memory management are discussed. The implementation of fundamental data structures and algorithms is emphasized. Data structures covered include structures, unions, linked lists, stacks, and queues. Recursion algorithms are discussed. Code efficiency and time complexity are discussed. Software development tools in the UNIX environment are introduced. Introductory UNIX system programming is also presented.
Undergraduate Level 200 Courses
Understanding E-Commerce Technologies
An introduction to the technology issues in e-commerce. This course covers major types of e-commerce, the technology infrastructure of e-commerce, e-commerce web sites, security and encryption in e-commerce, payment systems, and B2B e-commerce technologies. Case studies on current e-commerce companies are used to gain insight on related issues. This course is intended to provide students from different majors with an overview and also necessary details of e-commerce technologies. No technical background is assumed.
Advanced Website Development
Moving from building attractive Web Pages to building fundamentally sound and effective Web
Sites. This course extends basic Web page development ideas to constructing effective Web sites
through hands-on exercises. The course will cover design conception through storyboarding,
navigational flow and fundamentals of well-designed Web sites. A continuation into the theory
and application of creating web pages using advanced HTML features while introducing
DHTML, XML and JavaScript to extend the students knowledge of Web page development.
Working with the JavaScript objects and events will be a major basis of this course. The course
will also focus on the use of multimedia to create and maintain state-of-the art web sites.
Computer Programming, FORTRAN
2 hours lecture; 2 hours laboratory
An intensive course in the FORTRAN programming language.
Program Design and Data Structures with C
Prerequisite: Any programming course
An intensive course in the “C” programming language with introduction to UNIX for students who are already proficient in another high-level programming language such as BASIC, FORTRAN, or PASCAL.
Object-Oriented Programming in C++
Prerequisite: Any programming course
Fundamental conceptual tools and their implementation of object-oriented design and programming such as: object, type, class, implementation hiding, inheritance, parametric typing, function overloading, polymorphism, source code reusability, and object code reusability. Object-Oriented Analysis/Design for problem solving. Implementation of Object-Oriented Programming paradigm is illustrated by program development in C++.
Introduction to Computing Systems
Corequisites: CIS 190, MTH 181
3 hours lecture; 2 hours laboratory
Introduction to major components of computer system software. The course introduces fundamental concepts of computing systems, such as binary arithmetic and data representation, the Von Neumann model for processing computer programs, the operation of memory, instruction set, and machine and assembly language programming. It systematically presents the levels of transformations from machine language to assembly language to high level language. The role of such systems software components as assemblers, compilers, linkers, loaders, and operating systems is studied. The course has a strong project component.
Computer Organization and Design
Corequisite: MTH 181 Laws of computer organization and design for RISC architectures.
3 hours lecture; 2 hours laboratory
Interfaces between hardware and software are studied. Influence of instruction set on performance is presented. Design of a processor with pipelining is analyzed. Computer arithmetic is studied. Memory hierarchy and their influence on performance is documented. Elements of interfacing and I/O organization are included. The course has a design, implementation, and analytical components. (Formerly offered as CIS 270)
Software Specification and Design
Prerequisite: CIS 181
3 hours lecture; 2 hours laboratory
Object-oriented analysis and design: methodologies and tools. The course focuses on methodologies of specification and design of software systems. It addresses the issues of user interface design, software prototyping, and implementation of software designs. The course also presents the state of the art in the tool and environments supporting the front end of the software development cycle.
Experiential Learning
Prerequisites: At least sophomore standing; permission of the instructor, department chairperson, and college dean Work experience at an elective level supervised for academic credit by a faculty member in an appropriate academic field. Conditions and hours to be arranged. Graded CR/NC. For specific procedures and regulations, see section of catalogue on Other Learning Experiences.
Undergraduate Level 300 Courses
Computer Architecture
General organization of a computer system. Memory hierarchy. Emphasis on memory organization and management implementation. Local and long distance communication, bus, input-output organization and control. Programmed I/O and I/O processors. Interrupt handling. Processor organization; instruction set; arithmetic-logic unit; parallel and stack processors. Programmed and hardwired, central and distributed control.
Algorithms and Data Structures
Comprehensive coverage of all major groups of algorithms, including divide-and-conquer, dynamic programming, greedy, backtracking, branch-and-bound, and parallel algorithms. Discussion of the design and implementation of complex, dynamic data structures. Time and space complexity of algorithms are covered, including Big-O, Theta and Omega notations, Master theorem.
Models of Computation
Prerequisites: CIS 181, MTH 182
Models of sequential, parallel, and distributed computations. The Chomsky hierarchy of formal languages and their accepting machines are studied in detail. The relationship of these languages and machines to computer programs is presented. Influence of a Turing machine and related formalisms on modern computing are studied. Decidability of decision problems is explained. Several models of parallel and distributed computations are introduced and compared.
Empirical Methods for Computer Science
Prerequisite: MTH 331
Topics and methods supporting an experimental approach to the study of issues in computer science and software engineering. Course covers the basic principles of experimental design and case study construction. Emphasis in the course is on the use of empirical methods for decision making and the evaluation of research in computer science and software engineering that employ empirical methods.
Design of Operating Systems
Prerequisite: CIS 273
3 hours lecture; 2 hours laboratory
Principles of modern operating systems and their design. Scientific principles and engineering rules of operating systems are explored. Process and storage management subsystems are analyzed in detail. Protection and security are taken into account in design. An introduction to distributed operating systems is also presented. This is a design and project based course with a laboratory component.
Prerequisite: Junior standing
Introduction to the social, legal, and ethical issues of computing. Topics include how computer use affects social and work relationships and the uses of computers in society. These will be reviewed in the context of risks, privacy and intrusion, computer crime, intellectual property, and professional decision-making. Students analyze scenarios that allow them to view ethical decision-making as a crucial part of understanding the world of computing.
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.

Machine Learning
Prerequisites: CIS 360
Constructing computer programs that automatically improve with experience is the main task of machine learning. The key algorithms in the area are presented. Learning concepts as decision trees, artificial neural networks and Bayesian approach are discussed. The standard iterative dichotomizer (ID3) is presented, the issues of overfitting, attribute selection and handling missing data are discussed. Neural nets are discussed in detail, examples of supervised and unsupervised learning are presented. Instance-based learning, i.e. k-nearest neighbor learning, case-based reasoning are introduced. Genetic algorithms are discussed on introductory level.
Honors Project I, II
Prerequisitess: Junior standing, eligible for department honors program
The project courses required for completion of the departmental honors program. A significant experience in developing a computer system (typically), but equivalent alternatives are allowed. This system should require an extensive design effort prior to implementation and a serious effort for this implementation. It should have scholarly and/or practical value and might well profit by being interdisciplinary in nature.
Independent Study
Prerequisitess: Upper-division standing; permission of instructor, department chairperson, and college dean Study under the supervision of a faculty member in an area not otherwise part of the discipline’s course offerings. Conditions and hours to be arranged.
Directed Study
Prerequisitess: Permission of the instructor, department chairperson, and college dean Study under the supervision of a faculty member in an area covered in a regular course not currently being offered. Conditions and hours to be arranged.
Senior Software Engineering I
Two hours lecture and 4 hours laboratory
Part I of a two-semester sequence of team development of a software product for a specific customer. This capstone project utilizes and integrates knowledge and skill acquired through study of software engineering. Provides hands-on experience with large-scale problems form conception to implementation of the solution. The course is conducted in a framework of well-defined low-ceremony software process. The lecture covers software engineering models, quality management, risk management, and provides introduction to software processes. Technical, logistical, and social issues associated with software development are addressed.
Senior Software Engineering II
Prerequisites: CIS 498
One hour lecture and 4 hours laboratory
Part II of capstone project’s two -semester sequence of team development of a software product for a specific customer. This capstone project utilizes and integrates knowledge and skills acquired through the study of computer science. Provides hands-on experience with large-scale problems form conception to implementation of the solution. The course is conducted in a framework of well-defined low-ceremony software process. The lecture covers advanced software process issues including software process improvement and total quality management at the team and enterprise levels.