Page Content
Computer & Information Science
Computer Science
July 9, 2009
CS 1100 (CS U101) Computer Science and Its Applications 4
Introduces students to the field of computer science and the patterns of thinking that will enable them to become intelligent users of software tools in a problem-solving setting. Examines several important software applications so that students may develop the skills necessary to use computers effectively in their own disciplines.
An interest in learning about the applications of computer science.
Not for computer or information science majors.
CS 1200 (CS U221) Computer/Information Science Overview 1 1
Introduces new students to computer and information science as a profession. Develops academic and career success skills such as time management, organizational skills, professional skills, and interpersonal skills.
Intended for freshmen majors in the College of Computer and Information Science or freshmen who intend to transfer into the college.
CS 1210 (CS U222) Computer/Information Science Overview 2 1
Continues topics from Computer/Information Science Overview 1. Prepares students for COOP through topics such as ethics, privacy, security, responsibility, and intellectual property. Exposes students to popular industry technologies.
Intended for freshmen majors in the College of Computer and Information Science or freshmen who intend to transfer into the college.
To participate in COOP, students must take either CS 1210 (CS U222) or CS 1220 (CS U223).
CS 1220 (CS U223) Computer/Information Science Coop Preparation 1
Prepares transfer students into Computer and Information Science for COOP through topics such as ethics, privacy, security, responsibility, and intellectual property. Exposes students to popular industry technologies.
Intended for transfer students into the College of Computer and Information Science who are above the freshman level.
To participate in COOP, students must take either CS 1210 (CS U222) or CS 1220 (CS U223).
CS 1500 (CS U215) Algorithms & Data Structures for Engineers 4
Introduces algorithms and data structures for engineering students. Discusses data structures such as arrays, stacks, queues, and lists and the algorithms that manipulate these structures. Introduces simple algorithm analysis. Discusses classes and objects and presents the basic material about encapsulation, inheritance, and polymorphism. Introduces software development practices such as modular design, use of libraries, testing methods, and debugging techniques.
Restricted to Engineering students who have completed the introductory Engineering problem solving course or the equivalent.
CS 1501 (CS U216)
Not for computer or information science majors.
CS 1501 (CS U216) Lab for CS 1500 (CS U215) 1
CS 1500 (CS U215)
CS 1800 (CS U200) Discrete Structures 4
Introduces the mathematical structures and methods that form the foundation of computer science. Discusses structures such as sets, tuples, sequences, lists, trees, and graphs. Discusses functions, relations, ordering, and equivalence relations. Discusses inductive and recursive definitions of structures and functions. Discusses principles of proof such as truth tables, inductive proof, and basic logic. Finally, discusses the counting techniques and arguments needed to estimate the size of sets, the growth of functions, and the space-time complexity of algorithms.
A solid foundation in basic mathematical thinking.
CS 1801 (CS U201) if offered
CS 1801 (CS U201) Recitation for CS 1800 (CS U200) 0
CS 1800 (CS U200)
CS 2500 (CS U211) Fundamentals of Computer Science 1 4
Introduces the fundamentals of computer science by describing the functional and object-oriented styles of programming, examining basic sequential and recursive algorithms, and studying linear data structures including arrays and linear collection classes such as vectors, stacks, queues, and lists. Discusses elementary programming patterns. Presents techniques for the creation of simple graphical user interfaces. Applies these ideas to sample applications that illustrate the breadth of computer science.
An interest in learning about computer science in depth and a solid foundation in basic mathematical thinking.
CS 2501 (CS U212)
CS 1800 (CS U200) as a co-requisite
CS 2501 (CS U212) Lab for CS 2500 (CS U211) 1
CS 2500 (CS U211)
CS 2510 (CS U213) Fundamentals of Computer Science 2 4
Continues CS 2500 (CS U211). Examines object-oriented programming and associated algorithms using more complex data structures as the focus. Discusses nested structures and non-linear structures including hash tables, trees, and graphs. Emphasizes abstraction, encapsulation, inheritance, polymorphism, recursion, and object-oriented design patterns. Applies these ideas to sample applications that illustrate the breadth of computer science.
CS 2500 (CS U211)
CS 2511 (CS U214)
CS 1800 (CS U200) as a prerequisite or a co-requisite
CS 2511 (CS U214) Lab for CS 2510 (CS U213) 1
CS 2510 (CS U213)
CS 2600 (CS U380) Computer Organization 4
Introduces the basic design of computing systems: CPU, memory, input and output. Provides a complete introduction to assembly language: the basics of an instruction set plus experience in assembly language programming using a RISC architecture. Uses system calls and interrupt-driven programming to show the interaction with the operating system. Covers machine representation of integers, characters, and floating point numbers. Describes caches and virtual memory.
CS 2510 (CS U213)
CS 2800 (CS U290) Logic and Computation 4
Introduces formal logic and its connections to computer and information science. Offers an opportunity to learn to translate statements about the behavior of computer programs into logical claims and to gain the ability to prove such assertions both by hand and using automated tools. Considers approaches to proving termination, correctness, and safety for programs. Discusses notations used in logic, propositional and first order logic, logical inference, mathematical induction, and structural induction. Introduces the use of logic for modeling the range of artifacts and phenomena that arise in computer and information science.
CS 2500 (CS U211)
CS 2801 (CS U291)
CS 1800 (CS U200) as a prerequisite
CS 2801 (CS U291) Lab for CS 2800 (CS U290) 1
CS 2800 (CS U290)
CS 2900 (CS U231) Honors Freshman Seminar 1 1
Introduces a variety of topics that extend the material in the standard freshman computer courses or go beyond the scope of these courses.
For freshmen in the College of Computer and Information Science who are in the honors program or who wish to do additional challenging work.
CS 2901 (CS U232) Honors Freshman Seminar 2 1
Introduces a variety of topics that extend the material in the standard freshman computer courses or go beyond the scope of these courses.
For freshmen in the College of Computer and Information Science who are in the honors program or who wish to do additional challenging work.
CS 3200 (CS U430) Database Design 4
Studies the design of a database for use in a relational database management system. The entity-relationship model and normalization will be used in example problems. Relational algebra and then the SQL language will be presented. Advanced topics include triggers, stored procedures, indexing, elementary query optimization, and fundamentals of concurrency and recovery. Students will implement a database schema and short application programs on one or more commercial relational database management systems.
CS 2510 (CS U213)
CS 3500 (CS U370) Object-Oriented Design 4
Presents a comparative approach to object-oriented programming and design. Discusses the concepts of object, class, meta-class, message, method, inheritance, and genericity. Reviews forms of polymorphism in object-oriented languages. Contrasts the use of inheritance and composition as dual techniques for software reuse: forwarding versus delegation and sub-classing versus sub-typing. Fosters a deeper understanding of the principles of object-oriented programming and design including software components, object-oriented design patterns, and the use of graphical design notations such as UML. Basic concepts in object-oriented design are illustrated with case studies in application frameworks and by writing programs in one or more object-oriented languages.
CS 2510 (CS U213)
CS 3600 (CS U480) Systems & Networks 4
Introduces the basic concepts underlying computer operating systems and computer networks and provides hands-on experience with their implementation. Covers the basic structure of an operating system: application interfaces, processes, threads, synchronization, inter-process communication, processor allocation, deadlocks, memory management, file systems, and input/output control. Also introduces network architectures, network topologies, network protocols, layering concepts (i.e., ISO/OSI, TCP/IP reference models), communication paradigms (point-to-point vs. multicast/broadcast, connectionless vs. connection oriented), and networking API?s (e.g., sockets). Uses examples from many real operating systems and networks (UNIX, MS-DOS, Windows, TCP/IP, Ethernet, ATM, token rings) to reinforce concepts.
CS 2600 (CS U380)
CS 3800 (CS U390) Theory of Computation 4
Introduces the theory behind computers and computing aimed at answering the question: ?What are the capabilities and limitations of computers?? Covers automata theory, computability, and complexity. The automata theory portion includes finite automata, regular expressions, non-determinism, non-regular languages, context-free languages, pushdown automata, and non-context-free languages. The computability portion includes Turing machines, the Church-Turing Thesis, decidable languages, and the Halting Theorem. The complexity portion includes big-O and small-o notation, the classes P and NP, the P versus NP question, and NP-completeness.
CS 2510 (CS U213)
CS 1800 (CS U200) and CS 2800 (CS U290) as prerequisites
CS 4000 (CS U600) Senior Seminar 1
Requires students to give a 20-30 minute formal presentation on a topic of their choice in Computer Science. Prepares students for this talk by discussing methods of oral presentation, how to present technical material, how to choose what topics to present, overall organization of a talk, and use of presentation software and other visual aids.
Requires senior standing in CCIS or permission of instructor.
CS 4100 (CS U520) Artificial Intelligence 4
Introduces the fundamental problems, theories, and algorithms of the artificial intelligence field. Includes heuristic search; knowledge representation using predicate calculus; automated deduction and its applications; planning; machine learning. Additional topics may include game playing; uncertain reasoning and expert systems; natural language processing; logics for common-sense reasoning; ontologies; multi-agent systems.
CS 2510 (CS U213) plus CS 2800 (CS U290) or equivalent preparation in logic
CS 4200 (CS U630) Database Internals 4
Explores the internals of database management systems. Explains how database systems store data on disk. Studies how to improve query efficiency using index techniques such as B+-tree, hash indices, and multi-dimensional indices. Describes how queries are executed internally and how database systems perform query optimizations. Introduces concurrency control schemes implemented by locking including hierarchical locking and key range locking. Describes lock table structure. Discusses how database systems can perform logging and recovery to avoid loss of data in case of system crashes.
CS 3200 (CS U430)
CS 4300 (CS U540) Computer Graphics 4
Charts a path through every major aspect of computer graphics with varying degrees of emphasis. Discusses hardware issues: size and speed; lines, polygons, and regions; modeling: objects and their relations; viewing: what can be seen (visibility and perspective); rendering: how it looks (properties of surfaces, light, and color); transformations: moving, placing, distorting, and animation; interaction: drawing, selecting, and transforming.
CS 2510 (CS U213) plus MATH 2331 (MTH U371) or equivalent preparation in linear algebra
CS 4400 (CS U660) Programming Languages 4
Introduces a systematic approach to understanding the behavior of programming languages. Covers interpreters; static and dynamic scope; environments; binding and assignment; functions and recursion; parameter-passing and method dispatch; objects, classes, inheritance, and polymorphism; type rules and type checking; concurrency.
CS 3500 (CS U370) and CS 3800 (CS U390)
CS 4410 (CS U665) Compilers 4
Studies the construction of compilers and integrates material from earlier courses on programming languages, automata theory, computer architecture, and software design. Examines syntax trees; static semantics; type checking; typical machine architectures and their software structures; code generation; lexical analysis; and parsing techniques. Uses a hands-on approach with a substantial term project.
CS 2600 (CS U380) and CS 4400 (CS U660)
CS 4500 (CS U670) Software Development 4
Considers software development as a systematic process, involving specification, design, documentation, implementation, testing, and maintenance. Examines software process models; methods for software specification; modularity, abstraction, and software reuse; issues of software quality. Students, possibly working in groups, will design, document, implement, test, and modify software projects.
CS 3500 (CS U370) and CS 3800 (CS U390)
CS 4550 (CS U675) Web Development 4
Discusses Web development for sites that are dynamic, data driven, and interactive. Focuses on the software development issues of integrating multiple languages, assorted data technologies, and Web interaction. Considers ASP.NET, C#, HTTP, HTML, CSS, XML, XSLT, JavaScript, AJAX, RSS/Atom, SQL, and Web services. Requires each student to deploy individually designed Web experiments that illustrate the Web technologies and at least one major integrative Web site project. Students may work as a team with the permission of the instructor. Each student or team must also create extensive documentation of their goals, plans, design decisions, accomplishments, and user guidelines. All source files must be open and be automatically served by a sources server.
CS 3500 (CS U370) or equivalent preparation in object-oriented design
CS 4600 (CS U680) Topics in Operating Systems 4
Studies advanced concepts underlying computer operating systems and computer networks. Examines in depth all major operating system and network components including: device drivers, network protocol stacks, memory managers, centralized and distributed file systems, inter-process communication mechanisms, real-time schedulers and security mechanisms. Additional components will be covered as time allows. Provides hands-on experience with the source code of commercial-grade operating systems and networks.
CS 3600 (CS U480)
CS 4650 (CS U685) Research in High Performance Computing 4
This course introduces strongly motivated undergraduates, plus a limited number of invitation-only masters students, to research in the domain of High Performance Computing. Each instance of this course will cover a single topic with broad open questions. The required systems background needed to investigate these questions will be covered in the first part of the course. Then, working in teams, students will address different aspects of the open questions so that in combination the entire class will learn more than any single team could accomplish. Example topics include: use of new hardware such as GPU?s on video boards; use of new software tools for multi-core computing; development of check-pointing packages for more robust long computations; software for GUI window systems; and cloud computing.
CS 3600 (CS U480) and permission of instructor
CS 4700 (CS U640) Network Fundamentals 4
Introduces the fundamental concepts of network protocols and network architectures. Presents the different harmonizing functions needed for the communication and efficient operation of computer networks. Provides in-depth coverage of data link control, medium access control, routing, end-to-end transport protocols, congestion and flow control, multicasting, naming, auto-configuration, quality of service, and network management. Studies the abstract mechanisms and algorithms as implemented in real world Internet protocols. Also covers the most common application protocols (email, web, and ftp).
CS 3600 (CS U480)
CS 4740 (CS U645) Network Security 4
Studies topics related to Internet architecture and cryptographic schemes in the context of security. Provides advanced coverage of the major Internet protocols including IP and DNS. Examines denials of service, viruses, and worms and discusses techniques for protection. Covers cryptographic paradigms and algorithms such as RSA and Diffie-Hellman in sufficient mathematical detail. The advanced topics address the design and implementation of authentication protocols and existing standardized security protocols. Explores the security of commonly used applications like the web and email.
CS 3600 (CS U480)
CS 4750 (CS U647) Secure Wireless Ad hoc Robots on Mission (SWARM) 1 4
Exposes students to the concepts underlying the design of robust and secure heterogeneous wireless networking of mobile robots, that is, internetworking, security, wireless communication, embedded development, and mobile phone platforms. The course is mostly project oriented. Students will form mixed teams with the goal of designing and building rescue-mission oriented heterogeneous wireless systems operating in adversarial environments. The systems will consist of off-the-shelf robots enhanced by the students with a low-power control and sensing embedded system; a low-power digital radio frequency communication network; a coordination unit connected to the internet; and a messaging and command system based on cell phones. The course will culminate in a competition between teams. Students will be graded based on their designs, presentations, innovation, robustness, and competition performance. The course is open to students from CCIS, EECE, ME, and MATH.
Permission of instructor
CS 4760 (CS U648) Secure Wireless Ad hoc Robots on Mission (SWARM) 2 4
Continuation of CS 4750 (CS U647). Based on the lessons learned from building the systems in CS 4750 (CS U647), the teams will build more autonomous systems that can navigate areas where wireless communication or direct visibility are not possible. The systems will have to be resilient to more sophisticated denial of service attacks and will need to more carefully account for energy consumption expended on mobility, communication, and meeting the mission task. The course is open to students from CCIS, EECE, ME, and MATH.
Permission of instructor
CS 4780 (CS U650) Topics in Computer Networks 4
This topics course has effectively been replaced by the pair of courses CS 4700 (CS U640) and CS 4740 (CS U645). If this course is offered in the future, it will do more advanced network topics.
CS 3600 (CS U480)
CS 4800 (CS U690) Algorithms & Data 4
Introduces the basic principles and techniques for the design, analysis, and implementation of efficient algorithms and data representations. Discusses asymptotic analysis and formal methods for establishing the correctness of algorithms. Considers divide-and-conquer algorithms, graph traversal algorithms, and optimization techniques. Introduces information theory and covers the fundamental structures for representing data. Examines flat and hierarchical representations, dynamic data representations, and data compression. Concludes with a discussion of the relationship of the topics in this course to complexity theory and the notion of the hardness of problems.
CS 3500 (CS U370) and CS 3800 (CS U390)
CS 4900 (CS U610) Honors Senior Seminar 4
Offers a capstone course for computer science honors students. Exposes students to one or more topics of current interest in computer science. Requires students to prepare a one-hour presentation on a topic in computer science and to write a paper on that topic.
Honors senior standing in CCIS or permission of instructor
CS 4910 (CS U900) Computer Science Topics 4
A lecture course in computer science on a topic not regularly taught in a formal course. Topics may vary from offering to offering.
CS 3500 (CS U370), CS 2600 (CS U380), CS 3800 (CS U390), and permission of the instructor
May be taken up to three times for credit with different topics.
Taking this course more than once requires the additional permission of the Undergraduate Committee.
CS 4920 (CS U910) Computer Science Project 4
Under faculty supervision, a student will develop a substantial software or hardware artifact.
Junior standing, at least eight 4 SH courses in computer science, permission of the instructor, and permission of the Undergraduate Committee.
May be taken up to three times for credit.
CS 4970 (CS U970) Junior/Senior Honors Project 1 4
The Junior/Senior Honors Project courses are not normally offered as lecture courses but may be available to individual Honors students by arrangement with an instructor.
CS 4971 (CS U971) Junior/Senior Honors Project 2 4
The Junior/Senior Honors Project courses are not normally offered as lecture courses but may be available to individual Honors students by arrangement with an instructor.
CS 4997 (CS U700) Computer Science Thesis 4
Under faculty supervision, a student will prepare an undergraduate thesis.
Junior standing, at least eight 4 SH courses in computer science, permission of the instructor, and permission of the Undergraduate Committee.
CS 4998 (CS U701) Computer Science Thesis Continuation 4
Under faculty supervision, a student will continue to prepare an undergraduate thesis.
CS 4997 (CS U700), permission of the instructor, and permission of the Undergraduate Committee.
CS 4992 Directed Study 1 to 6
CS 4993 Independent Study 1 to 6
CS 4994 Internship 1 to 4
CS 4996 Experiential Education Directed Study 1 to 4