Computer science courses

CSC120 - Business Data Analysis using Spreadsheets
(2 credits) This course teaches students to use spreadsheets to organize, calculate, analyze, and report on business data. Topics include using built-in statistical, logical, lookup, and financial functions, writing custom formulas and conditional formulas, using built-in data analysis tools, presenting information with charts and graphs, creating PivotTables and PivotCharts, exporting and importing data to and from other applications, sharing data on the World Wide Web, and using macros to automate tasks. The course will culminate by developing key performance indicators (KPIs) and dashboards.
CSC130 - Business Data Management using Databases
(2 credits) The course teaches students to use relational databases to organize, query, analyze, and report on business data. Topics include the relational database model, creating database tables and setting appropriate table options, querying tables to gain insight into data, aggregating and summarizing queries, and creating reports to professionally present and visualize data. Importing and exporting data, sharing data over the Internet, and automating tasks using macros will also be covered.
CSC151 - Office Application Programming
(2 credits; alternate years) This course focuses on the customization and programmability of commonly used business applications. The main topics covered will include writing macros, controlling spreadsheets, databases and other business applications using scripts and short programs, and customizing applications to fit specific business needs. Prerequisite: CSC102 or permission of instructor.
CSC170 - Statistical Programming
(4 credits) In today's data-driven world, statistical literacy and data analysis are increasingly important skills. This course introduces students to the fundamental aspects of programming, such as data types, procedural abstraction, control structures, and iteration, with a focus on the application of these concepts to statistics and data analysis. Topics will include the programmatic implementation of summary statistics, correlation, linear modeling, and clustering. A statistics-focused language, such as R, is covered in-depth for the purpose of gaining mastery of these principles. Prerequisites: Math ACT subscore of 20 or above (SAT 510 or above)
CSC171QR - 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).
CSC172WI - 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.
CSC200 - Principles of Computer Information Systems
(2 credits; alternate years, consult department) This course outlines the concepts of computer information systems, data as a resource, information technology planning and implementation, and project management. Topics covered include decision theory, information theory, the role of information technology in an organization, evaluation of system performance, the development process, and societal and ethical issues related to information systems design and use.
CSC210 - Accounting Information Systems
(2 credits) This course explores the concepts of information systems support for accounting applications. AIS introduces conceptual data modeling, transaction processing systems, enterprise resource planning systems, business processes, documentation, computer security, internal control systems and cyper ethics from an accountant?s perspective. Prerequisites: ACC215 and CSC102, or permission of instructor.
CSC220 - 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.
CSC270 - 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.
CSC280 - Enterprise Architecture
(2 credits; alternate years, consult department) Enterprise Architecture investigates the organizational aspects of enterprise information and communication technology acquisition, implementation and maintenance. This course examines technology infrastructure in an organizational context. Students will evaluate technological frameworks and strategies for managing systems for data, information and content. Middleware, legacy systems, total cost of ownership, technology investment analysis, and emerging technologies will be explored. Students will understand how risk management, audit, compliance and security strategies are used. Students also practice communicating technology topics to both IT and non-IT audiences. Prerequisites: CSC171QR, 172WI.
CSC291 - 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.
CSC300 - Electronic Commerce Development
This course provides an introduction to electronic commerce strategy and the development and architecture of electronic business solutions and their components. Topics covered include the business models and economics associated with e-commerce, system design and implementation, building a Web interface for e- commerce, reliability, security concerns, and legal and ethical issues.Prerequisite: CSC172.(4 credits; alternate years, consult department)
CSC310 - Data Visualization
(4 credits; alternate years, consult department) Data visualization provides insight into unfamiliar data sets, identifies issues in statistical models, and helps effectively communicate results. This course will focus on all of these aspects, starting with exploratory and evaluative techniques and progressing to creating professional, publication-quality visualizations. The classroom experience will alternate between discussion of best practices and case studies and hands-on learning of industry-standard visualization programming librarie, and culminate with a comprehensive visualization project. Prerequisites: CSC170 or CSC171QR.
CSC321 - 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.
CSC331 - 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.
CSC341 - 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.
CSC351 - 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.
CSC361 - 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.
CSC371 - 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.
CSC381 - 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.
CSC398 - Directed Study
CSC417 - Internship
(2 credits may apply toward the major)
CSC420 - 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.
CSC450 - Value Issues in Computing
(2 credits) This course focuses on a range of social and ethical issues involved in computer science and computer use. Computer professionals have to face these issues and deal with them in a responsible way. Some issues discussed in the course include ethical decision making, software piracy, software protection, computer crime, privacy, errors and reliability, computers and the workplace, responsibility and reliability, artificial intelligence, and virtual reality.
CSC470 - Senior Project
(2 credits) This course gives the student an opportunity to branch off into an area of their own selection. The student must obtain approval of a project proposal from a member of the department before registering for this course. The project will require planning, design, and implementation of a computer application in such a way as to integrate the material from computer science courses and courses outside computer science. Students with career concentrations or minors are encouraged to make use of materials from their other subject areas.
CSC480SR - Computing: Practice and Philosophy
(4 credits) This course will give students a chance to reflect on their experiences at Northwestern as members of the computer science department while prompting them to thoughtfully consider their future careers. Time will be spent considering how past courses have shaped their faith as well as their programming abilities. We will discuss the role of technology as redemptive work and will attempt to articulate when it is and is not a vehicle for positive change. We will also spend time looking at some of the advantages and pitfalls that exist for professionals in the technology sector. Finally, students will be required to complete, either individually or as a team, a large project to add to their portfolios and give them industry-like experience. Prerequisite: CSC172WI and senior class standing.