Computer Science (CS)
Professors: D. W. Palmer, M. Kirschenbaum; Associate Professors: F. J. Fuglister, D. A. Norris (Chair), D. L. Stenson, L. M. Seiter
The Department of Mathematics and Computer Science offers two major programs in computing: a Bachelor of Science in computer science and a Bachelor of Science in computer information systems. Both majors have a common set of core courses for the first two years of study, preparing students with a strong foundation in software programming and application development. The two majors diverge for the upper-level courses, with computer science majors acquiring a strong understanding of how and why technology works, while computer information systems majors focus on learning how to apply technology to solve complex business problems. The department also offers mathematics (MT) programs that are described in a separate section.
Technology is becoming an increasingly integral part of everyday life. It influences the music we enjoy, the medical advances we rely upon, the way we communicate, and how we do business. An understanding of technology is a vital skill set for an educated person in this century. Computer science drives innovation in all of the sciences and business, as almost every significant challenge facing the world turns to computing as an aid to a solution.
The major in computer science leading to the Bachelor of Science degree prepares students for a career in technology, as well as graduate study in computer science. Computer science careers span the spectrum of possibilities: from working for national companies with large, well-established technology departments to founding entrepreneurial start-up companies at the frontier of future technology to filling critical support roles in virtually all possible fields, including medicine, business, manufacturing, consulting, government, law, and research.
The major in computer information systems leading to the Bachelor of Science degree enables students to understand, manage, and apply technology within the realistic constraints of an ever-changing marketplace. Graduates of the program play a critical role in the future of business, the economy, and social interactions by designing new forms of communication and online business communities.
Major and Minor Requirements
Major in Computer Science: 49 hours. CS 128, 128L, 228, 230, 251, 270, 328, 330, 428, 470; MT 118 or MT 135 (or another MT course with permission of department); two CS courses chosen from the following list: CS 333, 365, 366, 433, 477; four additional CS courses at or above the 300 level.
A comprehensive examination is required.
Major in Computer Information Systems: 49 hours. CS 128, 128L, 228, 230, 251, 270, 330, 431, 470, 475; MT 118 or MT 135 (or another MT course with permission of department); two CS courses chosen from the following list: CS 345, 346, 444, 451; four additional CS courses at or above the 300 level. Two business courses may be substituted for upper-level CS courses with permission of the advisor.
A comprehensive examination is required.
Minor in Computer Science: 22 hours. CS 128, 128L, 228, 230, 251; two additional courses chosen from 300 and 400-level CS courses; one of the following: MT 118, 134, 135.
101. TOPICS FROM COMPUTER SCIENCE 3 cr. Computer familiarization course surveying the academic discipline of computer science. Topics include elementary programming, spreadsheets, databases, and graphics packages. Emphasis is on understanding what computers and computer professionals do rather than on learning programming.
128. INTRODUCTION TO SOFTWARE APPLICATION DEVELOPMENT 3 cr. Corequisite: CS 128L. Overview of software development for a variety of application domains: business, Internet, and scientific. This course will introduce many facets of the field of computer science, including computer programming, information management, interactive user interfaces, design and modeling, logic, incremental development, testing, problem decomposition, and debugging. To support this broad introduction, students will learn a variety of programming languages.
128L. INTRODUCTION TO SOFTWARE APPLICATION DEVELOPMENT LABORATORY 1 cr. Corequisite: CS 128. Programming laboratory intended to provide hands-on experience in applying the programming concepts learned in CS 128. Experience in learning the process of program development, with emphasis on techniques for testing and debugging. CS 128 and 128L must be taken together in a single semester.
199. SPECIAL TOPICS IN COMPUTER SCIENCE 1-3 cr. Subject announced in the schedule of classes.
228. OBJECT-ORIENTED DESIGN AND PROGRAMMING 3 cr. Prerequisite: CS 128. Corequisite: MT 118 or MT 134 or MT 135. Project-based course that demonstrates software engineering benefits of object-oriented languages: modularity, adaptability, and extensibility. Object-oriented programming concepts: objects, classes, methods, constructors, message passing, interfaces, inheritance, polymorphism. Graphical User Interface APIs.
251. DATABASE SYSTEMS 3 cr. Prerequisite: CS 128. Relational databases: structure, operations, SQL, QBE; database design: entity-relationship models, normal forms.
270. SOFTWARE DEVELOPMENT PRACTICES 3 cr. Prerequisite: CS 228. Skills, tools, and techniques necessary for successful software engineering projects in a hands-on, project-oriented context. Students will work on development efforts that each focus on a different set of tools and techniques. Topics include system design, UML diagrams, unit testing, system testing, continuous integration, refactoring, performance and optimization, acceptance testing, and code maintenance.
280. HOT TOPICS IN COMPUTER SCIENCE 1 cr. Discussion of computer-science issues by faculty and students; ideologies, trends, emerging technologies, and cutting-edge concepts in computing. Invited speakers from academia and industry will present their perspectives on new technologies. Faculty and students select articles for discussion. Students may take Hot Topics courses for credit a maximum of four times.
328. ADVANCED PROGRAMMING 3 cr. Prerequisite: CS 228. Advanced object-oriented programming: exceptions, threads, synchronization, serialization; Data Structures/Collection API’s. Introduction to algorithms and analysis of algorithms.
330. E-COMMERCE AND ENTERPRISE COMPUTING 3 cr. Prerequisites: CS 230, 251; corequisite: CS 228. Advanced web programming and design, Web application frameworks such as Ruby On Rails, J2EE architecture. Enterprise Object Models; Web 2.0 technologies, Ajax, Portals, E-Commerce frameworks and architectures.
333. ROBOTICS 3 cr. Prerequisites: CS 228. Construction of robots to perform specific tasks. Primary focus will be on managing the real-world inexactness that robots must contend with. Multi-robot systems including cooperation, coordination, and redundancy. Conceptual and practical aspects of robotics.
345. SOCIAL COMPUTING 3 cr. Prerequisite: CS 230. Introduction to a variety of Internet-enabled information technologies and concepts involving the interactions of large numbers of people. These include social networking sites, blogs, RSS, podcasting, wikis, social bookmarking tools, photo sharing tools, e-communities, mapping tools, participating in and programming of virtual worlds, and grid/cloud computing. The course will examine emergence and knowledge as facilitated by our now-interconnected global community.
346. HUMANISTIC COMPUTING 3 cr. Prerequisite: CS 230. Introduction to and investigation of the human component of computational technology. Topics include ethics issues such as privacy, security, intellectual property, e-waste, software piracy, electronic democracy. The course will also explore human-computer interaction issues such as interface design and evaluation, information architecture, new interaction paradigms, and human-computer hybrid problem-solving techniques.
365. GAMING AND GRAPHICS 3 cr. Prerequisite: CS 328. Exploration of computing techniques that create color, animated imagery of objects, and realistic and imaginative representations of the world that can be used in photography, motion pictures, and video games. Exploration of graphical design and implementation for gaming, including large team development of a class-designed game.
366. GAMING AND ARTIFICIAL INTELLIGENCE 3 cr. Prerequisite: CS 328. Exploration of artificial intelligence concepts to bring about intelligent interactions among software agents in a video game environment. Includes team development of a class-designed game.
380. SPECIAL TOPICS IN PROGRAMMING 1-3 cr. Prerequisite: dependent on topic. Investigations of emerging programming technologies and paradigms.
399. INDEPENDENT STUDY IN COMPUTER SCIENCE 1-4 cr. Prerequisite: permission of chair and faculty member. Designed for the student who wants to undertake a research project supervised by a faculty member.
428. NETWORK PROGRAMMING WITH LINUX 3 cr. Prerequisite: CS 328. Project-driven course that will study aspects of the Linux operating system and computer network related to a semester project. Topics may include management of computer resources such as memory management and file system structure and protection; network topology, including routing algorithms; and the use of analytical tools for network analysis and design; Client/Server model, and threading and synchronization. Successful projects will create tools to be used in other computer science courses.
431. MULTIMEDIA PROGRAMMING 3 cr. Prerequisites: CS 228, 230. Principles of interactive multimedia design; introduction to multimedia documents and authoring via Dreamweaver, Fireworks, and Flash; introduction to integrated hybrid applications using Flash and HTML, digital media, audio, and compression.
433. ROBOTICS AND ARTIFICIAL INTELLIGENCE 3 cr. Prerequisite: CS 333. Integration of intelligence and robotic computation. Modeling and simulating intelligent decision making as a component of a virtual or physical robotic system. Focuses on multiple agent systems and their interactions, including custom programming languages, root simulations, and physical robotic hardware.
444. ADAPTIVE AND OPEN SOFTWARE SYSTEMS 3 cr. Prerequisites: CS 228, 230, 251. Design and implementation of adaptive software frameworks; component-based models; open-source architectures and methodologies; tool extensions and plug-ins.
451. ADVANCED INFORMATION MODELING 3 cr. Prerequisites: CS 228, 251. Alternative data models and advanced database techniques. Object-oriented data models, Web-DBMS integration technology, data-warehousing and date-mining techniques, database security and optimization, and other advanced topics.
470. SOFTWARE ENGINEERING PROJECT 3 cr. Prerequisite: junior or senior CS or CIS major. Simulation of the environment of the professional software developer working in a team on a large software project for a real client. Development teams will make widespread use of previously learned tools and techniques. Student developers will encounter a wide variety of issues that naturally occur in a project of scale, using their skills, ingenuity, and research abilities to address all issues and deliver a working, useful system. Use of the Extreme Programming development methodology.
475. TECHNICAL WRITING IN COMPUTER SCIENCE 3 cr. Prerequisite: CS 228. Written communication related to computer science emphasizing clear, concise expression of technical information. Exploration of several types of CS writing, including users’ guides, help pages, tutorials, mainstream articles, and technical papers. Students read and analyze example pieces; write, edit, and revise their own and critique other students’ work.
477. DESIGN PATTERNS 3 cr. Prerequisite: CS 228. Object-oriented design skills and techniques. Surveys all 23 of the “canonical” design patterns catalogued by Gamma et al., and others, including the creational, structural, and behavior classes of patterns. Variations of these patterns, how and where to apply the patterns, and using the patterns together to build larger, more maintainable programs.
480. SPECIAL TOPICS cr. TBA. Reading, reports on, and investigation of selected material and topics.
499. INDEPENDENT STUDY IN COMPUTER SCIENCE 1-4 cr. Prerequisite: consent of chair and instructor. Designed for the student who wants to undertake a research project supervised by a faculty member.