LISP~ An introduction to the LISP programming language. Prerequisites: Computer Science 172 or 17200 or permission.
C~ An introduction to the C programming language. Prerequisite: Computer Science 172 or 17200 or permission.
FORTRAN~ An introduction to the FORTRAN programming language. Prerequisites: Computer Science 172 or 17200 or permission.
COMPUTERS & ENTERTAINMENT W/ LAB:MM~ Since the advent of the computer age, new types of entertainment have arisen that take advantage of the new capabilities. These include animations used in games and movies, web sites that support a wide variety of social and leisure activities, and the ability to create complex simulations such as amusement park rides. This course will explore various applications of computing in entertainment as well as some of the underlying principles of computer science. No prior experience with computer science or programming is expected. This course fulfills the Modeling Methods requirement.
Core: Modeling Methods
JAVA SUPPLEMENT~ An intense introduction to the basic CPSC 172 or 17200 with all work completed in intense sessions the preparation for CPSC 172 or 17200: Introduction to Programming Java. Only available to students who have met their laboratory science requirement, whose declared academic program requires a programming course, and who have received permission from the instructor. Pass/No Credit Only. Must be taken concurrently with CPSC 172 or 17200. Not open to students who have completed CPSC 171 or 17100. Prerequisite: Permission of instructor.
Corequisite: CPSC 17200
INTRODUCTION TO COMPUTER SCIENCE-W/LAB:MM~ The introduction to the computer science discipline which establishes a scientific foundation for a variety of topics, including computer programming, computer design, information processing, the algorithmic solution of problems, and the study of the algorithmic process itself. Student must also register for a lab. This course fulfills the Modeling Methods requirement. The breakdown between lecture and lab hours is for administrative office use only. This course may only be taken as 4 credit hours.
Core: Modeling Methods
INTRODUCTION TO PROGRAMMING-W/LAB:MM:~ An introduction to the process of program creation. Students will learn to use the principal facilities of a high-level programming language and to transform algorithms into correct programs. Abstract data types will be stressed. Student must also register for a CPSC 17200 lab. This course fulfills the Modeling Methods requirement. Prerequisite: Computer Science 171 or 17100 or 170 or 17000 or 16600 taken concurrently or permission. The breakdown between lecture and lab hours is for administrative office use only. This course may only be taken as 4 credit hours.
Core: Modeling Methods
WORKSHOP~ This workshop will provide the opportunity for students to examine a special topic in Computer Science. Through readings, discussions and written assignments there will be opportunities to evaluate the topic at issue. Workshops may be taken Pass/No Credit only. Students may take no more than nine workshops for credit toward graduation. Workshops can be used as elective credit only. (For PGS students only.)
DATA STRUCTURES AND ALGORITHMS-W/LAB:MM~ A study of a broad spectrum of data structures and algorithms and the use of advanced language facilities and programming techniques for implementing them. Student must also register for a CPSC 20100 lab. This course fulfills the Modeling Methods requirement. Prerequisite: Computer Science 172 or 17200 with a grade of C or better or permission. The breakdown between lecture and lab hours is for administrative office use only. This course may only be taken as 4 credit hours.
Prerequisite: (CPSC 172 or CPSC 17200)
Core: Modeling Methods
PROBLEM-SOLVING AND PROGRAMMING PRACTICUM~ Successful computer problem-solving relies not only on the development of appropriate algorithms, but also on the recognition of instances of well-defined problem classes for which algorithms already exist. In addition, excellence in computer programming cannot be developed without significant practice in implementing and debugging solutions. This course will provide students with a guided programming practicum, in which they will program solutions to carefully chosen problems that exemplify common problem classes. Many problems will be chosen from recent programming contests. Prerequisite: Computer Science 172 or 17200 or permission.
SYSTEMS PROGRAMMING~ Systems programming concentrates on an in-depth study of one operating system, such as Unix, and how to write system programs in that operating system. The course will concentrate on the operating system's history, file system structure, commands, utilities, multi-tasking capabilities, communication, security, and shell-type programming. Theory is presented in the context of how the operating system implements the ideas. By the end of the course, students should be able to determine how most of the commands are implemented and how to use operating system properties to create tools and applications. Prerequisite: CPSC 171 or 17100 or Permission.
Prerequisite: CPSC 171 or CPSC 17100
DESIGNING AND BUILDING COMPUTER GAMES~ Computer gaming is a large and growing industry and the skills needed in the industry can be applied across the field of computer science. In this course you will work in teams to design and build a computer game using these skills. Programming topics covered in the course include threading, graphics and animation, interactivity and user interfaces, sound effects and music, and multi-player gaming over networks. In addition you will learn skills for working on a large project in a team environment. This course is designed around group work. You will be responsible for one portion of your team’s performance. Prerequisites: CPSC 172 or 17200
Prerequisite: (CPSC 172 or CPSC 17200)
COMPUTER ETHICS:ES~ A consideration of some of the major controversies, key value conflicts, ethical dilemmas, and social choices that drive and shape the computerization of our society. Representative areas of concern will include personal information and privacy, the effect of introducing the computer into the work place, computer crime and fraud, relationships in electronic communities, security and reliability issues, and the use of the information highway. May not be used to satisfy a distribution requirement in the sciences. This course fulfills the Meaning, Ethics, and Social Responsibility requirement.
Core: Meaning/Ethics/Soc Responsibil
COMPUTER ORGANIZATION~ An introduction to the design, functioning, and control of the subsystems of a computer system: processors, memory, storage, and input/output.Topics include digital logic, combinatorial, sequential, and register-transfer circuits, control unit, interrupt processing, microprogramming, and assembly language. Prerequisite: Computer Science 171 or 17100 and 172 or 17200 or permission.
COMPUTER VISION~ An introduction to the theory and algorithms needed for automatic interpretation of images.Topics include: image formation, segmentation, stereo, motion and other geometric reasoning techniques, object recognition, and applications. Sources of uncertainty and techniques for recognition in the presence of uncertainty will also be discussed. Students will implement significant parts of a complete object recognition system. Prerequisites: Computer Science 171 or 17100 and 172 or 17200 or permission.
USER INTERFACE DESIGN~ In order to develop systems that are usable and useful, the interactions between user and system must be considered. This class will focus on designing the user interfaces of computer systems. Students will learn and practice the entire life cycle of a user interface design from modeling theuser through designing, developing, and formally evaluating the interface. This course will include a significant group system development project. Prerequisite: CPSC 171 or 17100 and CPSC 172 or 17200 or permission.
VLSI DESIGN~ Virtually every electronic device includes one or more VLSI (Very Large Scale Integration) "chips." This course will look at how such VLSI chips are designed, concentrating on field-programmable logic devices (FPLDs), which are the chips most commonly used for small-volume consumer devices. The course will cover logic design, schematic capture, and design, using a hardware description language. Students will design and implement projects on actual FPLDs. Prerequisites: Computer Science 171 or 17100 and 172 or 17200 or permission, CPSC 252 or 25200 is recommended.
OPERATING SYSTEMS~ An introduction to operating systems that explores the design principles, internal algorithms, and the abstract data types of operating systems. Topics include concurrent programming principles, storage management techniques, scheduling algorithms, and file management schemes. Prerequisite: Computer Science 171 or 17100 and 172 or 17200 or permission.
PROGRAMMING LANGUAGES~ A study the concepts underlying programming languages. Students will learn to describe the syntax and semantics of programming languages in a formal manner, to analyze a programming language with respect to its capabilities and limitations for the solution of particular classes of problems, to approach the task of learning a new programming language in an effective manner, and to specify desirable characteristics in a language. Prerequisite: Computer Science 171 or 17100 and 172 or 17200 or permission.
COMPUTER SECURITY~ An introduction to secure computer systems and a study of their most important responsibilities, including authenticating users, protecting user privacy, and ensuring the privacy, integrity, and availability of the system's data. The student will gain an understanding of techniques and procedures that are being used as well as the challenges that still remain to attain secure computer systems, networks, and the Internet. Prerequisite: Computer Science 171 or 17100 and 172 or 17200 or permission.
DATABASE DESIGN~ A study of the principles and concepts relevant to the management of complex data systems, especially the relational database model. Students design and implement a complete database system, from requirements analysis through documentation, using a generic database engine. Counts toward e-minor. Prerequisite: Computer Science (171 or 17100) and (172 or 17200) or permission.
INTRODUCTION TO THE DESIGN AND ANALYSIS OF ALGORITHMS~ Algorithms play the central role in the field of Computer Science. This course will primarily focus on the techniques used for designing algorithms to solve common problems in the field of Computer Science as well as methods for evaluating an algorithm’s performance. In designing algorithms the course will look at such methods as brute force, divide-and-conquer, transformation of the problem, and dynamic programming. Analysis techniques will include important concepts such as space-time tradeoffs. Efficiency classes, and mathematical analysis techniques. Mathematical sophistication will be developed. Prerequisites: Computer Science 201 or 20100 or permission.
Prerequisite: (CPSC 201 or CPSC 20100)
COMPUTER MODELING AND SIMULATION:SM~ An introduction to modeling and simulation to solve real-world system problems. The exphasis will be on gathering data and modeling natural systems. Topics covered will include discrete event simulation, parameter optimization, Markov models, and other system modeling techniques, simulation languages, techniques for running simulation models, and the analysis of the simulation output to gathered data. This course fulfills the Experimental Scientific Methods requirement. Prerequisites: CPSC 171 or 17100 and 172 or 17200 or permission.
Core: Experimental Scientific Method
COMPUTER NETWORKS~ A study of the fundamentals of the field of data and computer communication. Key topics include the layered architecture, network protocols, and algorithms for accurate and reliable message delivery in both local-area and wide-area networks. Current networking standards will be studied. Prerequisite: Computer Science 171 or 17100 and 172 or 17200 or permission.
PARALLEL COMPUTING~ An introduction to parallel and distributed architectures, programming languages, operating systems, and algorithms. Students will design and program parallel and distributed algorithms. Prerequisite: Computer Science 171 or 17100 and 172 or 17200 or permission.
SOFTWARE ENGINEERING~ Students will study both the theoretical and practical aspects of designing and developing large, complex software systems. Readings will emphasize research results and case studies of all phases of the software lifecycle - requirements, specification, design, resource allocation, implementation, integration, and testing. Principles will be applied by the class to various projects. Prerequisites: CPSC 171 or 17100 and 172 or 17200 or permission of the instructor.
SPECIAL TOPICS IN COMPUTER SCIENCE~ Various advanced topics are offered when need and sufficient interest are demonstrated. Credit hours and prerequisites are established for each offering. May be taken more than once with department consent.
ARTIFICIAL INTELLIGENCE~ The goals, problems, concepts, and methods of artificial intelligence are explored. The emphasis is on computer problem-solving paradigms and knowledge representations. Examples of techniques and systems are chosen from the areas of image recognition, human-machine interfacing, game playing, natural-language understanding, robotics, expert systems, and automatic reasoning. Students will design and implement relevant algorithms. Prerequisites: Computer Science 201 or 20100 or permission.
Prerequisite: CPSC 201 or CPSC 20100
COMPUTER GRAPHICS~ A study of the algorithms and techniques of computer graphics and animation. Topics include display devices, geometric algorithms for displays, interaction methods, hierarchical modeling, lighting color, shading models, and hidden edge and surface algorithms. Students will design and implement various three-dimensional algorithms to produce displays in an interactive environment. Prerequisites: Computer Science 171 or 17100 and 172 or 17200 or permission.
COMPILER DESIGN AND CONSTRUCTION~ An intense treatment of the theoretical and practical considerations involved in implementing translators for high-level programming languages. Students will design and implement parts of a compiler for a high-level language. Prerequisites: Computer Science 171 or 17100 and 172 or 17200, and at least one computer science course above 200 or 20000, or permission.
INTEGRATED RESEARCH COMPONENT I~ The student will propose and complete a plan to investigate a research topic that is integrated with the specified course. The plan must include a substantial implementation demonstrating some aspect of the research, a journal-quality research paper, and a formal talk presented to peers and faculty. Corequisite: Specified 300 or 30000-level Computer Science course. Prerequisite: Computer Science 201 or 20100 or permission.
Prerequisite: (CPSC 201 or CPSC 20100)
INTEGRATED RESEARCH COMPONENT II~ The student will propose and complete a plan to investigate a research topic that is integrated with the specified course. The plan must include a substantial implementation demonstrating some aspect of the research, a journal-quality research paper, and a formal talk presented to peers and faculty. Corequisite: Specified 300 or 30000-level Computer Science course. Prerequisite: Computer Science 400 or 40000
Prerequisite: (CPSC 400 or CPSC 40000)
THEORY OF COMPUTATION~ An introduction to the classical and contemporary theory of computation. The topics covered are the theory of automata and formal languages, computability by Turing machines and recursive functions, unsolvability, computational complexity, and mathematical logic. Mathematical sophistication is expected. Prerequisites:Computer Science 201 or 20100 or permission.