| [111] Weaving the Web A gentle introduction to computer science, focusing on the Internet. Students are introduced to Web design, HTML authoring, and JavaScript programming; topics include social, ethical, and technical issues related to being an Internet and computer user. A weekly laboratory session provides hands-on experience. No previous experience with computers is required. Not open to students who have taken higher-numbered computer science courses.
Four credit hours. Q.
151fs Problem Solving and Programming An introduction to computational thinking: how we can describe and solve problems using a computer. Using the Python language, students will learn how to write algorithms, manipulate information, and design programs to make computers useful tools. Designed both for majors and students who want to learn how to apply the power of computing to their area of interest. A weekly laboratory session provides an opportunity for supervised hands-on learning. No previous computer experience required.
Four credit hours. Q. MAXWELL, RUSSELL
231fs Data Structures and Algorithms Using Java, an introduction to the primary data structures and the algorithms that operate on them. Data structures to be studied include arrays, graphs, trees, stacks, and queues. The algorithms include searching, sorting, insertion, deletion, and traversal.
Prerequisite: A grade of C- or higher in Computer Science 151.
Four credit hours. MAXWELL, SKRIEN
232s Computer Organization An introduction to computer organization: memory, processors, input/output, virtual machines, and assembly language. Prerequisite: Computer Science 151.
Four credit hours. SKRIEN
[258] Discrete Structures Problem-solving and analysis techniques using discrete mathematical structures from a computer science perspective. Topics include functions, relations, and sets; basic logic; proof techniques; basics of counting; graphs and trees; discrete probability.
Prerequisite: Computer Science 231.
Four credit hours.
[319] Cognitive Modeling A multidisciplinary approach to the study of intelligence and the mind, bringing together the fields of psychology, computer science, philosophy, education, linguistics, anthropology, neuroscience, and logic, among others. Cognitive science derives its strength from a view of the mind as an information system, including processes that implement perception, memory, reasoning, language, learning, and consciousness.
Prerequisite: One of the following: Computer Science 231, Psychology 122, Anthropology 113, Biology 274, or one course in logic.
Four credit hours.
[328] Machine Learning and Data Mining A study of computer programs that are able to improve their performance with experience. Topics may include a variety of machine learning approaches, from those that induce patterns in data (called classification or data mining) to those that attempt to model human learning abilities; an emphasis is placed on machine learning as an experimental science.
Prerequisite: Computer Science 231 and junior/senior standing or permission of the instructor.
Four credit hours.
333s Programming Languages A survey of programming languages and programming language paradigms, including the history, design, and formal definitions of different languages. Includes study of imperative (e.g., C, Pascal, Ada, Fortran), logic (e.g., Prolog), functional (e.g., ML, Lisp, Scheme), and object-oriented (e.g., Java, Smalltalk, CLOS, C++, Eiffel) programming languages. Languages are compared to see how well they achieve the goals of solving various types of problems in an efficient and readable manner.
Prerequisite: Computer Science 231. Four credit hours. RUSSELL
[336] Parallel and Distributed Processing Parallel and distributed paradigms, architectures, and algorithms, and the analytical tools, environments, and languages needed to support these paradigms.
Prerequisite: Computer Science 231 and 232.
Four credit hours.
[352] User-Centered Design A theoretical and practical examination of designing useful and user-friendly computer systems. Techniques for assessing the need for technology, specifying the system design, involving users in the design process, and acknowledging human error are explored, as are the ethical implications of technological choices. Design methods include mockups, rapid prototyping, field testing, and formative evaluation. Project management, teamwork, and communication skills are also emphasized. Prerequisite: Computer Science 231. Four credit hours.
356f Introduction to Compiler Construction Introduction to the theory, basic techniques, and design of compilers and interpreters of general purpose programming languages; grammars, symbol tables, lexical analysis, semantic analysis, code generation, and optimization. Offered in alternate years.
Prerequisite: Computer Science 231 and 232. Four credit hours. SKRIEN
[357] Operating Systems An introduction to systems-programming concepts with an emphasis on timeshare systems and networking. Topics may include storage and memory management, scheduling, I/O, communication, and security. Offered in alternate years. Prerequisite: Computer Science 231 and 232. Four credit hours.
361s Object-Oriented Design Object-oriented design techniques for producing modular, extensible software, focusing on learning good programming style, object-oriented design principles, and design patterns. Students will examine case studies of moderately large programs and tools such as CRC cards and UML. A significant programming component.
Prerequisite: Computer Science 231.
Four credit hours. SKRIEN
[369] Design and Implementation of Computer Games Hands-on study, design, and development of computer games, using the perspectives of technology, science, and art. Designing good computer games requires knowledge of appropriate technologies, multiple topics in computer science, art and design principles, and the social context in which computer games exist. Individual projects will be followed by a group project charged with the design and implementation of a complete computer game, emphasizing programming skill, design principles, and the use of existing tools.
Prerequisite: Computer Science 231.
Four credit hours.
[375] Analysis of Algorithms Analysis of the space and time efficiency of algorithms. Graph, genetic, parallel, and mathematical algorithms as well as algorithms used in cryptology may be explored. Offered in alternate years. Prerequisite: Computer Science 231 and either CS258 or MA274.
Four credit hours.
378f Introduction to the Theory of Computation Formal languages, automata theory, computability, recursive function theory, complexity classes, undecidability. Offered in alternate years. Also listed as Mathematics 378. Prerequisite: Computer Science 231 and either Computer Science 258 or Mathematics 274.
Four credit hours. SKRIEN
[393] Computer Science Reading Seminar A wide-ranging seminar in computer science on topics of interest organized and participated in by both students and faculty. The format typically entails discussions based on readings from current literature in computer science selected by the seminar participants. Intended to acquaint students with current research and issues in various fields of computer science. Nongraded. May be repeated for credit. Prerequisite: Permission of instructor. One credit hour.
397f Computer Vision Focuses on automatic visual object recognition and real-time human-computer visual interfaces, culminating in a final project that permits sophisticated visual interaction with a desktop computer or robot. Covers numerous algorithms and analysis techniques of computer vision relevant to these tasks, including 2D binary, grayscale, and color image analysis, image and data filtering, segmentation, texture analysis, 3D stereo, 3D model representation and generation, and pattern classification techniques. Prerequisite: Computer Science 231.
Four credit hours. MAXWELL
398s Cryptography and Information Security An introduction to the cryptographic theory underlying information security and issues related to implementing secure protocols and applications in practice. Topics include confidentiality, authentication, pseudo-randomness, public-key and symmetric-key encryption, message authentication codes, digital signatures, Internet security protocols, and applications. Prerequisite: Ability to think abstractly and some digital aptitude.
Four credit hours. RUSSELL
484s Honors Independent Study The independent study component of the honors program in computer science. Cannot be counted toward the major or minor. Prerequisite: Permission of the instructor and admission to the honors program. Three or four credit hours.
491f, 492s Independent Study Independent study in an area of computer science of particular interest to the student. Prerequisite: Permission of the instructor. One to four credit hours. FACULTY
|