Computer Science

Computer science is a study of the structure, theory and application of computers and computer programs. It includes the study of algorithms, the representation and organization of information, the management of complexity, and the relationship between computers and their users. Computer science is a mathematical discipline. It utilizes mathematical techniques for abstraction and representation of complex systems. From another perspective, computer science is an engineering discipline concerned with the design and construction of systems in order to solve complex problems.

Computer science department homepage

Major requirements

CSC 171QR - Computer Science I
(4 credits) (NWCore option under Quantitative Reasoning) This is the first in a two-semester sequence of courses that introduces students to fundamental aspects of the field of computing; focusing on problem-solving, software design concepts and their realization as computer programs. Topics include procedural abstraction, control structures, iteration, data types and their representation. An introduction to a high-level language, for the purpose of gaining mastery of these principles, will be provided in lectures and hands-on laboratory experiences. Prerequisite: ACT math score of 20 or above (SAT 510 or above).
CSC 172WI - Computer Science II
(4 credits) (Writing intensive) This course moves students into the domain of software design, introducing principles that are necessary for solving large problems. Here, the classical software design process serves as a basis for treating such topics as abstract data types, specifications, complexity analysis and file organization. Basic data structures and transformations are introduced as representative of the fundamental tools that are used to aid in this process. A high-level language will be used for the purpose of gaining mastery of these principles through lectures and independent hands-on laboratory experiences. Prerequisite: CSC171QR.
CSC 270 - Computer Organization
(4 credits; alternate years, consult department) This course explores architecture and computer design issues in modern computers. Part of the course is spent looking at the basic building blocks used to design and build a computer. The rest of the course deals with how to work with the computer at the level of the central processing unit, main memory and registers. Programming assignments are done in assembly language to see what commands the computer really understands. Corequisite: CSC172WI.
CSC 351 - Data Structures
(4 credits; alternate years, consult department) This course deals with data structures and their algorithms. Emphasis is given to good data abstraction and efficiency. The data structures covered include arrays, linked lists, trees, graphs and strings. Other topics covered may include design patterns, analysis of algorithms, and complexity classes. Programming is done in an object-oriented language. Prerequisite: CSC172WI.
CSC 371 - Concurrency and Parallelism
(4 credits; alternate years, consult department) Modern computing architectures utilize multiple processing cores to improve performance by executing multiple commands concurrently. In order to effectively take advantage of this paradigm shift, programmers must adapt their thinking, algorithm design, and coding practices. This class will cover the basic principles of parallel algorithms, the analysis of parallel and sequential algorithm efficiency, testing and debugging techniques, and development tools for parallel programs. Multicore desktop processors, massively parallel GPUs, and cloud computing architectures will be considered. Prerequisite: CSC172WI.
CSC 381 - Programming Languages
(4 credits; alternate years, consult department) This course discusses programming languages from a general viewpoint-what are the properties of all successful programming languages? Also discussed are various programming paradigms: iterative programming, object-oriented programming, functional programming, logic programming, concurrent programming, etc. Programming may be done all in one language (emulate other paradigms), in a few select languages (one for each paradigm), or in a large variety of languages.Prerequisites: CSC270 and 351.
Choose one course: 4
CSC 220 - Web Development
(4 credits; alternate years, consult department) This course will introduce the basics of web development. Various languages will be used to design and develop a front-end web page including HTML, CSS, and JavaScript. This will include a discussion of website accessibility requirements and other legal and ethical considerations. The basics of interacting with a back-end server and database may also be explored. Co-requisite: CSC172WI.
CSC 291 - Database Management Systems
(4 credits; alternate years, consult department) This course examines database concepts, theory, design and management. Emphasis will be on the relational model. Topics will also include normalization, query languages, database recovery and security aspects. This course will include experience with a relational database system and programming database access into computer applications via a high-level programming language. Prerequisite: CSC171QR.
CSC 321 - Principles of Software Engineering
(4 credits; alternate years, consult department) Software engineering is the process used to gather requirements for a software solution from a user and develop a piece of software to meet the needs of that user. Several things usually contribute to a successful project including proper version control, requirements gathering, software design, software lifecycles, code reviews as well as testing and maintenance of the software. This course will cover those topics and ask students to work on a team to create a large software project to demonstrate mastery of the topics covered in class. Prerequisite: CSC172WI.
Choose two courses: 8
CSC 331 - Cybersecurity
(4 credits; alternate years, consult department) This course will introduce the topic of computer security. Topics covered will include user authentication and access control, malicious software, firewalls, intrusion detection, buffer overflows, and website security. The human aspects of security including legal and ethical concerns will also be examined. Prerequisite: CSC172WI.
CSC 361 - Networking
(4 credits; alternate years, consult department) This course introduces the student to the field of computer networking. Students will develop an understanding of the general principles of computer communication as they are worked out in an appropriate protocol suite. Specific attention will be paid to principles of architecture, layering, multiplexing, addressing and address mapping, routing and naming. Problems considered include the writing of network software, the physical construction of networks, the Internet and its future development, and network security. Prerequisite: CSC172WI.
CSC 341 - Data Mining and Machine Learning
(4 credits; alternate years, consult department ) Data mining is the practice of analyzing large datasets using automated computational methods to discover patterns and generate knowledge that would not be detected by human inspection alone. Machine learning is the use of algorithms and statistical models to analyze and draw inferences from the patterns found in large data sets. Other closely related terms include artificial intelligence, statistical learning, data science, and predictive data analytics. This course will present the basic theories and foundational mathematics behind machine learning. Students will implement these concepts using an appropriate programming language and develop their own machine learning project. Specific attention will be paid to the ethical and social issues arising from the use of this technology. Prerequisite: CSC172WI.

Cognate requirements

MAT 112QR - Calculus I
(4 credits) (NWCore option under Quantitative Reasoning) This course is a study of functions, limits, derivatives and integrals with a strong emphasis on both theory and applications. Prerequisites: C- or higher in MAT109, or an ACT math score of at least 24 (SAT 570 or above), or permission of mathematics department chair. Note: Meets four times per week.
Choose one course: 3-4
MAT 180WI - Logic and Discrete Mathematics
(3 credits) (Writing intensive) An introduction to the language and logic of mathematical proof via topics in discrete mathematics. Topics will include logic, elementary number theory, basic set theory and methods of mathematical proof (direct proof, indirect proof, induction). Prerequisite: C- or better in MAT 112QR or permission of instructor. Note: Other topics will be chosen from counting, functions, relations, recursion and graph theory.
PHI 202QR - Logic
No course description available.

Total credits required: 43-44