Software Engineering
Software engineering is the study of systematic approaches to the development, operation and maintenance of software. In this major, students will learn how to write code in a variety of programming languages and develop efficient algorithms to solve problems. Additionally, students will study best practices for project management, design, testing, documentation, verification and quality assurance. Large-scale projects and teamwork are integrated throughout the curriculum to provide hands-on experiences simulating real-world practices.
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: C- or better in MAT090, an ACT math score of 20 or above
(SAT 510 or above), or a passing score on the MAT090 placement exam.
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: CSC171.
CSC 220 - Web Development
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. (4 credits; alternate years, consult department)
CSC 291 - Database Management Systems
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: CSC171.(4 credits; alternate years, consult department)
CSC 321 - Principles of Software Engineering
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: CSC 172WI. (4 credits; alternate
years, consult department)
CSC 331 - Cybersecurity
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. (4 credits; alternate years, consult department)
Choose one courses: 4
CSC 270 - Computer Organization
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: CSC172.(4 credits; alternate years, consult department)
CSC 351 - Data Structures
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: CSC172.(4 credits; alternate years, consult department)
Choose two courses: 8
CSC 341 - Data Mining and Machine Learning
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. (4
credits; alternate years, consult department)
CSC 361 - Networking
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: CSC172.(4 credits; alternate years, consult department)
CSC 371 - Concurrency and Parallelism
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. (4 credits; alternate years, consult
department)
Cognate requirements:
BUS 201 - Principles of Management
(2 credits) This course introduces the student to the basic principles of
management. It includes the understanding of manager's actions in the
work place, on the organization and employees. It includes the study of
basic management tools and techniques.
BUS 205 - Project Management
(2 credits) This course is an introduction to the field of project management. The main
objective is to gain a basic overview of how project management is an art, a
science, and a practice. Students will gain technical skills but even more
importantly soft skills. Projects are about people, working with people,
using skills like communication, working effectively in teams, interpersonal
skills, time management, critical thinking, and organizational skills that
are all highly valued by employers. The course will emphasize experiential
learning and collaborative learning. Prerequisites: BUS200 or BUS201.
Choose one course: 3-4
MAT 111QR - Calculus for Management
(3 credits)(NWCore option under Quantitative Reasoning) This course is a
study of functions, limits, derivatives and integrals
with an emphasis on techniques and applications in business, biology,
health, and social sciences.
Note: Does not count toward a math major or minor.
Prerequisites: C- or higher in MAT109, or an ACT math score of at least 22
(SAT 550 or above), or permission of mathematics department chair.
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.
Note: Meets four times per week.
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.