C
Course Descriptions
 

101 COMPUTERS AND APPLICATIONS (4)
Study of computers, computer systems, and computer applications. Computer hardware and software fundamentals. Networking, telecommunications, and the Internet. Hands-on experience with a variety of standard computer applications. Computer-related social and ethical issues. Lab.

102 COMPUTER-MEDIATED COMMUNICATIONS (3)
Prereq: basic computer literacy. Internet skills, with an emphasis on the Internet as a medium of political and business communication, research, cultural exchange and worldwide collaboration. Basic principles of effective Web site organization and design. Lab.

103 INTRODUCTION TO COMPUTER GAME DEVELOPMENT (4)
Prereq: basic computer literacy, use of keyboard and mouse. An introduction to computer game development for students with no programming background. Students use game development software to develop games of varying complexity, including graphics and sound, and extend to more complex games through the use of scripts.

112 INTRODUCTION TO INTERNET RESOURCE CREATION (4)
Prereq: CSCI 101, 102 or permission of instructor. Methods for the construction and maintenance of published materials on the World Wide Web. Hypertext Markup Language (HTML) through advanced level, including frames and tables. Introduction to interactive Web pages with JavaScript programming, Flash and Dreamweaver.

140 PROGRAMMING FUNDAMENTALS (4)
Prereq: Math 102 or permission of instructor. Intended for students wishing to acquire programming skills in connection with natural science or technology. Basic concepts of computer programming using an object-oriented programming language. Topics include introduction to development environment, introduction to computer architecture, and language elements such as control structures, functions, basic I/O, one-dimensional and parallel arrays, text file I/O, and user-interface design. Emphasis on algorithm development, program solving, and software engineering. Programming is required in implementation of concepts. Lab.

141 COMPUTER PROGRAMMING I (4)
Prereq: one of the following: Math 112, 114, 115, 118, 124, 125, 128 or 156. Intended for those majoring in computer science. Basic concepts of computer programming using an object-oriented programming language. Topics covered: introduction to development environment, introduction to computer architecture, and elements of a language such as control structures, functions, basic I/O, one-dimensional and parallel arrays, text file I/O. Algorithm development, problem solving and software engineering are emphasized. Programming is required in implementation of concepts. Lab.

145 COMPUTER PROGRAMMING AND LINEAR DATA STRUCTURES (4)
Prereq: Csci 141 or equivalent; any of the following: Math 115, 118 or 124. Abstract data types, generics, access or pointer types, dynamic memory allocation, recursion, concurrent programming and linear data structures, including stacks, lists and queues. Programming is required in implementation of concepts. Lab.

172 INTRODUCTION TO ROBOTICS (4)
An introduction to robotics for students with no programming background. Lego Mindstorms Team Challenge Set is used to build the robots. Students will learn to construct, control and program these robots. Students will gain first-hand experience in quantitative and symbolic reasoning through the course of learning.

202 BASIC INTERNET RESOURCES (4)
Prereq: CSCI 112 or permission of instructor. Principles and technologies required to produce and distribute Internet (World Wide Web) content, with a focus on site architecture and client-side dynamic pages; an introduction to server-side processing.

211 DISCRETE STRUCTURES AND FUNCTIONAL PROGRAMMING I (4)
Prereq: CSCI 141; any of the following: Math 115,  118 or 124. Elementary logic (truth tables, propositional calculus), proofs, sets (tuples, relations, functions), induction, inductively defined sets (lists, strings, trees, graphs). Programming using a functional language is required in implementation of concepts. Lab.

225 SOCIAL AND ETHICAL ISSUES IN COMPUTER SCIENCE (3)
Prereq: available only to students who have been accepted into the computer science major. A forum for student learning, discussion, debate, and writing on topics on the ethical issues and the social impact of computing. Students are provided with instruction on oral communications and multimedia presentation.

227 COMPUTER ORGANIZATION I (4)
Prereq: one of the following: MATH 112, 114, 115, 118, 124, 125, 128 or 156. Overview of basic computer organization and design, data representation, digital logic, Boolean algebra. Combinational circuits, sequential logic circuits, system interconnection structures, processor design issues, instruction set architectures, instruction set design, details about the Pentium processor, pipelining and vector processors, Flynn’s taxonomy, RISC processors.

241 DATA STRUCTURES (4)
Prereq: CSCI 145; Math 124 or 157. Hash tables, general trees, search trees, balanced trees, graphs, file organizations (direct, indexed, sequential), external sorting techniques, storage allocation structures. Programming is required in implementation of concepts. Lab.

242 INTRODUCTION TO JAVA PROGRAMMING (4)
Prereq: CSCI 145. Introduction to the Java programming language for CS majors and non-majors seeking Web programmer certification from theInternet Studies Center. Subjects include object-oriented programming, language, utilities, abstract, window toolkit, network programming and applets.

311 DISCRETE STRUCTURES AND FUNCTIONAL PROGRAMMING II (4)
Prereq: CSCI 211; Math 124 or 157. Big-Oh notation; best, worst and average running time; discrete probability; recurrences; propositional and predicate logic; higher-order logic and computational logic; algebraic structures.

341 OBJECT-ORIENTED PROGRAMMING IN C++ (4)
Prereq: CSCI 241. Object-oriented design: Universal Modeling Language (UML); realization of object-oriented design in C++, templates, Standard Template Library.

342 WEB SCRIPT PROGRAMMING (3)
Prereq: CSCI 145. For CSCI majors and nonmajors seeking Web programmer certification from the Internet Studies Center. Development of programs and scripts for Web server applications; common gateway interface with Perl, C, and other scripting languages. Server-side JavaScript; Active Server pages.

344 SOFTWARE ENGINEERING (3)
Prereq: CSCI 341. Requirements analysis, design, development and release of software in a project environment; waterfall model of software development; configuration management and version control. Survey of current technologies such as extreme programming and UML. Writing proficiency course.

347 COMPUTER ORGANIZATION II (3)
Prereq: CSCI 145, 227. Pentium assembly language programming, interfacing assembly language programs to high-level languages, memory design, cache memory, virtual memory, I/O interfacing and communication, interrupts.

351 WINDOWS SOFTWARE DEVELOPMENT (3)
Prereq: CSCI 341. Design and development of event-driven programmming using Win32 API and Visual C#.NET. Use of .NET Framework libraries. Creation of Windows-based applications using forms, controls, and GDI+. Introduction to graphical user interfaces and Visual Studio development tools.

352 UNIX SOFTWARE DEVELOPMENT (3)
Prereq: CSCI 341. The design and development of systems and programs in the Unix environment. Unix operating system fundamental concepts. Unix standards and implementations. System data files. Environment of a Unix process. Unix programming at the system call level. File and terminal I/O, processes, interprocesses communication and signals. Introduction to shell programming, standard Unix development tools and system utilities: awk, m4, cc, lint, make, sed, grep, and others.

367 COMPUTER NETWORKS I (3)
Prereq: CSCI 227, 341. Introduction to computer networks; network architecture and design; protocols, management, physical networks; implementation of network protocols, programming projects in protocol usage and applications.

380 NUMERICAL COMPUTATIONS (4)
Prereq: CSCI 241, Math 204. Computer arithmetic and error analysis, roots of nonlinear equations, solution of system of linear and nonlinear equations, numerical differentiation, numerical quadrature, approximation theory, initial and boundary value problems.

401 FORMAL LANGUAGES AND AUTOMATA (3)
Prereq: CSCI 311. Formal languages, grammars, automata.

402 ARTIFICIAL INTELLIGENCE (3)
Prereq: CSCI 311. Introduction to knowledge representation and search. Possible application areas include natural language, perception, learning and expert systems.

403 PRACTICUM IN NET RESOURCE MANAGEMENT (3)
Prereq: MIS 314 and permission of instructor. Group project in the creation and management of an Internet site; Web server installation; use of a variety of site management tools.

405 DESIGN AND ANALYSIS OF ALGORITHMS (3)
Prereq: CSCI 311, 341; Math 226. Derivation of time and space complexity of algorithms. Typical algorithms investigated include sorts, graph traversals, string matching. Algorithm paradigms: divide and conquer, greedy algorithms, backtracking, branch and bound. Discussion of NP-completeness. Correctness proofs of algorithms.

410 PROGRAMMING LANGUAGES (3)
Prereq: CSCI 311 and 344. Introduction to the structure of programming languages; syntax and semantics; properties of algorithmic languages; special purpose languages.

420 COMPUTER ARCHITECTURE III (3)
Prereq: CSCI 311, 341, 347. Basic processor design: arithmetic logic unit, datapath, control alternatives, pipelining; memory organizations: cache memory, virtual memory; input/output and interfacing; comparative architectures. Student reports.

430 DATABASE THEORY (3)
Prereq: CSCI 311, 341. Data models and their access languages. Design issues: ER diagrams, functional dependency analysis and normalization. Database programming.

442 ADVANCED WEB PROGRAMMING IN JAVA (3)
Prereq: CSCI 242, 342. CSCI 242 may be waived with instructor approval. For CSCI majors and nonmajors seeking Web programming certification from the Internet Studies Center. Advanced network, applet, and server applications in Java. GUIs, Web spiders and Web search algorithms, security, remote method invocation and Java Beans.

450 COMPILER THEORY AND DESIGN (4)
Prereq: CSCI 344, 410; CSCI 401 is recommended. Theory and practice of compiler design. Emphasis is on basic theory and methods necessary to design and implement a functional syntax directed compiler.

460 OPERATING SYSTEMS (3)
Co- or prereq: CSCI 347. Principles of operating systems; concurrent processes; resource management; process management; file systems; protection.

461 COMPUTER SECURITY (3)
Prereq: CSCI 311, 341, 367. An overview of computer security and detailed study of the theoretical foundations and practical implementations of some aspects of security, including policy specification, the role of cryptography, policy implementation and assurance, security threats and countermeasures.

467 COMPUTER NETWORKS II (3)
Prereq: CSCI 367. Advanced computer network. Applications including Internet and distributed computing.

480 COMPUTER GRAPHICS (4)
Prereq: CSCI 344, 351; Math 204; CSCI 380 or Math-CS 375. Overview of the hardware, software, and techniques used in computer graphics; raster display devices; input devices; display files, 2D and 3D transformations; windowing, clipping; simple surface rendering.

483 COMPUTER ANIMATION (4)
Prereq: CSCS 341, MATH 204. Introduction to traditional animation. Three-dimensional modeling and viewing. Motion specification and interpolation, kinematics of motion, key framing, coordinate systems and transformations, Euler angles and quaternions, cubic and B- splines. Articulated figures (forward kinematics), human and animal modeling, physically based modeling (rigid and deformable), rendering. Production-level animation software.

494 PROFESSIONAL WORK EXPERIENCE (4)
Prereq: 30 credits in computer science, including CSCI 344; GPA at least 2.70 and permission of department. Academic credit awarded for employment in industry. Students are required to keep a journal and to submit a written report. See the Department of Computer Science for information. S/U grading.

496 SENIOR PROJECT (3)
Prereq: senior status and permission of department, senior evaluation. Software development project requirement specifications, design, implementation, testing, and documentation. Review of the computer science curriculum to prepare students for the Major Field Examination (MFE). Students must take the MFE.

498 TEACHING PRACTICUM (2)
Prereq: senior status and permission of department. Classroom experience in computer science teaching. Students will assist faculty in laboratory settings. Repeatable to a maximum of 4 credits.
GRADUATE COURSES
Admission to Graduate School or special permission required. See the Graduate School section of this catalog.

505 PARALLEL COMPUTATION (4)
Prereq: CSCI 401, or equivalent. Topics in concurrent and parallel computation. Possible areas include formal specification methods for parallel systems, semantics and verification of parallel language programs, and analysis and implementation of parallel algorithms.

510 AUTOMATA AND FORMAL LANGUAGE THEORY (4)
Prereq: CSCI 311 or equivalent. Advanced treatment of formal languages and automata; finite state machines; stack machines and Turing Machines; the Chomsky hierarchy; regular, context free, context sensitive languages, recursively enumerable languages.

511 ANALYSIS OF ALGORITHMS (4)
Prereq: CSCI 341, MATH 226; graduate status or acceptance to undergraduate honors program in computer science. Systematic study of algorithms and their complexity, searching and sorting, pattern matching, geometric and graph algorithms, NP-complete and intractable problems.

512 DESIGN AND IMPLEMENTATION OF COMPUTER PROGRAMMING LANGUAGES (4)
Prereq: graduate status or acceptance to undergraduate honors program in computer science. Evaluation of programming language features, classification of programming languages in terms of expressiveness, complexity, uniformity and orthogonality. Cost of implementing and using programming language in view of compilation and run-time environments. Mapping of programming language features onto computer architectures. Alternative programming methodologies: functional paradigm, imperative programming, logic programming, data flow programming, explicit and implicit concurrency models.

513 SYSTEMS PROGRAMMING AND OPERATING SYSTEMS INTERNALS (4)
Prereq: graduate status or acceptance to undergraduate honors program in computer science. Systems software such as linkers, loaders, system utility software and operating system internals. Investigation of real operating systems, augmentation or modification of the operating system source code. Process creation and management; interprocess communication; process scheduling; I/O hardware and software; memory management; file system design and implementation; security and protection mechanisms.

520 ADVANCED COMPILER DESIGN (4)
Prereq: CSCI 401, 450, or any graduate-level course involving work with formal languages. Theory and practice of compiler design. Detailed consideration of efficient parsing techniques; organization of semantic analysis and code generation phases; machine dependent and independent optimization techniques; organization of runtime environment.

525 ADVANCED TOPICS IN OPERATING SYSTEMS (4)
Prereq: CSCI 460 or equivalent. Various topics as they relate to distributed operating systems. Case study using a distributed operating system to perform experiments in class laboratory.

527 EMBEDDED SYSTEMS (4)
Prereq: CSCI 347. Design and development of embedded microprocessors in instrumentation, controls and user appliances.

528 CORBA APPLIED TO SCADA SYSTEMS (4)
Prereq: CSCI 460 or 513 and CSCI 367. SCADA systems, middleware, implementation of a small control system using PLCs and CORBA.

530 ADVANCED DATABASE THEORY (4)
Prereq: CSCI 430 or equivalent. Advanced topics in database systems. Possible areas include transaction processing, concurrency control, recovery, security, query optimization, distributed systems, and logic-based systems.

536 WEB SERVICES (4)
Prereq: CSCI 367 and 512. Evolution of middleware and web services, architecture of distributed information systems, SOAP, WSDL, UDDI.

540 THEORY AND PRACTICE OF PROGRAMMING LANGUAGEDESIGN (4)
Prereq: CSCI 512 or equivalent experience. Design and implementation of novel programming languages.

545 DISTRIBUTED FILE SYSTEMS (4)
Prereq: graduate standing, CSCI 513. Topics in distributed file systems. Topics include networked file systems, server and client implementation, network protocols, high-level goals, actual implementations, mobile computing needs, current research in distributed file systems.

571 MACHINE LEARNING ALGORITHMS (4)
Prereq: CSCI 402 or equivalent. Covers important machine learning research areas such as artificial neural nets, Bayesian learning, data mining, decision tree learning, evolutionary computation, reinforcement learning, version space learning, rough sets, and computational learning theory. Algorithms from these research areas will be analyzed. Each student will select one of the learned algorithms and apply it to the term project.

572 ROBOTICS (4)
Prereq: CSCI 571 or equivalent. Class materials cover from hardware to software according to students’ needs and available instructors. Each course offering will select one of the two (hardware and software) research areas or a combination of them. The syllabus includes, but is not limited to, architectures, navigation, and motion planning, control, vision, synthesizing, and algorithm design. Students will gain firsthand experience by working on a small robot. They will design algorithms or manipulate the hardware to make the robot do or learn a certain task.

573 COMPUTATIONAL LINGUISTICS (4)
Prereq: graduate status, or permission of instructor. Formal and computational models of the syntax, semantics and pragmatics of natural languages; rival approaches to semantic and pragmatic representation; applications to database queries and machine translation.

577 DATA MINING (4)
Prereq: CSCI 510, 511. Techniques for extracting useful information from large data sets; attribute-value learning techniques (decision trees, association rules); relational mining techniques (inductive logic programming, efficient search of relational spaces); probabilistic techniques (Bayesian networks, conditional independence); statistical techniques; sampling strategies; applications in bioinformatics, personalization, information retrieval, web modeling, filtering, and text processing.

578 CRYPTOGRAPHY (4)
Prereq: graduate status or permission of instructor. Selected topics from number theory; simple, homophonic, polyalphabetic substitution ciphers; product ciphers, DES; public-key algorithms, digital signatures and identification schemes; key management.

580 ADVANCED COMPUTER GRAPHICS (4)
Prereq: CSCI 480 or equivalent. Three-dimensional concepts, shading techniques, curves and surfaces, ray tracing, radiosity, texture mapping, fractals.

584 SCIENTIFIC VISUALIZATION (4)
Prereq: CSCI 480 or equivalent. Introduction to the computer display of scientific datasets. Topics include visualizing 2D and 3D scalar and vector fields, visualizing nonlinear relationships, and user interface design.

585 IMAGE PROCESSING (4)
Prereq: graduate status or permission of instructor. Digital image fundamentals, image transforms, image enhancements, image restoration, image encoding, representation and description, color image processing, morphological operations.

601 AREA OF SPECIALIZATION RESEARCH EXPERIENCE I (4)
Prereq: permission of instructor. Work on ongoing research project. Credit given when CS 601, 602 and 603 completed. S/U grading.

602 AREA OF SPECIALIZATION RESEARCH EXPERIENCE II (4)
Prereq: CSCI 601 and permission of instructor. Work on ongoing research project. Credit given when CS 601, 602 and 603 completed. S/U grading.

603 AREA OF SPECIALIZATION RESEARCH EXPERIENCE III (4)
Prereq: CSCI 601, 602 and permission of instructor. Work on ongoing research project. Credit given when CS 601, 602 and 603 completed. S/U grading.