Computer Science

(For majors in the social or physical sciences)
Inexpensive computer power has made mass communication a reality for the modern world. This process needs professionals in each career/academic discipline who know enough about computers to see the opportunities for computerization in their career/discipline. The career concentration in computer science aims to give you breadth of knowledge about the basic fundamentals of computer science.

Computer science department homepage

Required courses

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.
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.
Choose two courses: 7-8 credits
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 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.
CSC 420 - Special Topics
(3 or 4 credits; alternate years, consult department) This course is for upper-level computer science majors to cover current topics in computer science. Possible topics for this course include computer graphics, compiler construction, parallel processing, high-performance computing, and artificial intelligence. Prerequisite: junior or senior class standing or permission of instructor.

Total credits required: 22-23