Department of Computer Science
Department Chair: Anne Foerst, Ph.D.
Faculty
C. Bopp, Ph.D.
A. Foerst, Ph.D.
B. Kellogg, M.S.
Z. Sakkaff, Ph.D.
H. Wang, Ph.D.
The Department of Computer Science houses several undergraduate majors and minors. The Computer Science major prepares students for entry-level software engineering, networking, database application development, and web administration positions. The Cybersecurity major prepares students for careers in computer crime investigation, information assurance, and digital forensics. The Data Science major prepares students for entry-level data analyst positions in traditional and interdisciplinary domains. These programs also prepare students for advanced study at the graduate level. Most graduates enter the workforce as computer professionals; one or two per year elect to pursue study at the graduate level. Due to the overlap between these programs, many students minor or double major in these related fields.
The department follows the ACM (Association for Computing Machinery) and the IEEE's guidelines for undergraduate education.
The department offers a variety of upper-division courses that permit students to explore different areas of the discipline and to find the ones in which they are most interested. Upper-division course offerings include courses in the areas of web development, database systems, computer networks, user experience design, artificial intelligence, robotics, operating systems, and penetration testing, among others.
The department maintains three computer labs to support the curriculum. The Software Development Laboratory supports the first three courses in the major sequence and several upper-division courses. The Network/Systems Administration lab supports a variety of introductory and advanced networking and server management courses. The Cybersecurity Lab offers workstations for conducting advanced security assessments. Finally, a virtual lab environment allows students to gain hands-on experience with virtual servers, giving them the ability to configure and deploy new services.
Together, the department faculty has published numerous articles, textbooks, and received successful National Science Foundation grants. With the addition of practicing professionals, the program faculty provides breadth and depth in the foundational - as well as emerging areas - of computing. Students often participate in research projects with faculty supervision, occasionally co-authoring papers with faculty members.
Computer Science (CS)
CS-COMP Comprehensive Exam (0 Credits)
Restrictions: RG.86+
CS-101 Beauty & Joy of Computer Science (3 Credits)
This course presents the history, social implications, great principles, and future of computing. It examines the computing applications that have changed the world and how computing empowers discovery and progress in other fields. The relevance of computing to the student and society will be emphasized. Students will learn the joy of programming a computer using a friendly, graphical language, and will complete a substantial team programming project related to their interests. The course consists of two lecture hours and one two-hour laboratory per week.
CS-131 OBJECT ORIENTED PROGRAMMING (4 Credits)
This is the first course in the computer science major sequence. The course introduces the object- oriented approach to software design using the programming language Java. Topics covered are software design, implementation and testing, basic computer organization and source code translation. No previous programming experience is presupposed. The course consists of three lecture hours and one two-hour laboratory per week.
Prerequisite(s): TAKE CS-101
Corequisite(s): Take CSL-131
CS-132 ALGORITHMS & DATA STRUCTURES (4 Credits)
This is the second course in the computer science major sequence. The course utilizes the object- oriented design approach to building applications, which emphasizes the creation and utilization of reusable software tools. Students are introduced to data structures that are commonly encountered in building software applications and to the analysis of the efficiency of algorithms used to solve problems. The programming language Java is used to implement software designs. The course consists of three lecture hours and one two-hour laboratory per week.
Prerequisite(s): Take CS-131
Corequisite(s): Take CSL-132
CS-133 INTRODUCTION TO PYTHON (3 Credits)
This course introduces the Python programming language and compares its syntax and semantics to those of Java. Fundamental programming concepts and approaches covered in prior Computer Science programming classes will be built upon to increase students' proficiency in software development. The course will focus on the application of Python to problems commonly encountered in the area of data sciencel and will guide students through initial requirements gathering, planning, development, and testing of code. The course consists of three lecture hours and one two-hour laboratory per week.
Prerequisite(s): Take CS-132
Corequisite(s): Take CSL-133
CS-241 COMPUTERS, SOCIETY & ETHICS (3 Credits)
Computers are ubiquitous in our society today. They have impacted the way we think about reality because we gain insights through googling questions and through social media. We often forget that this access to realityis mediated and might be false. Also, a large part of human interactions happens in cyberspace. And white we intuitively apply norms that guide our offline behavior to our online lives cyber communications don't necessarily trigger empathy which makes numerous of those interactions hurtful. Finally, we do online shopping, putting brick and mortar stores out of business which is leading to a reconstruction of the job market. This class addresses the impact computers have on our daily lives and presents ethical solutions.
Prerequisite(s): Take CS-101
CS-243 DATABASE AND BIG DATA (3 Credits)
An introduction to database management systems, including database design and application development. Different database models are introduced, with emphasis on the relational model. The theoretical principles underlying the design of a database and the physical storage of data and its integrity are covered. The laboratory component is used to design and implement a real-world database application that illustrates theory.
Prerequisite(s): Take CS-101
Corequisite(s): Take CSL-243
CS-244 APP DEVELOPMENT (3 Credits)
Introduction to the design and implementation of a database-driven application using a tool such as Microsoft ASP.Net. Students will design and implement an e-commerce application based upon a SQL server database. The course presupposes familiarity with relational database design and application development. Topics include Visual Studio.Net tools for managing data sources, data controls for populating Web pages, data presentation tools, configuring, deploying and trouble-shooting an ASP.Net application. Students will build a data-driven Web site.
Prerequisite(s): Take CS-131
Corequisite(s): TAKE CSL-244
CS-254 COMPUTER NETWORKS (4 Credits)
A study of computer networks based on the OSI model of a layered network architecture. The TCP/IP protocol suite is used to illustrate network protocols. The course includes an overview of local area networks, routing algorithms, and network applications. The course consists of three lecture hours and one two-hour laboratory per week. The laboratory component provides experience in network programming using sockets.
Prerequisite(s): Take CS-101
Corequisite(s): Take CSL-254
CS-255 SERVER MANAGEMENT (4 Credits)
This course conveys knowledge and skills to understandan dperform basic operations involved in deploying and managing server systems, applications, and their requisite security in the enterprise. Instructions on "Simplicity of Design" will be given to help students understand the impact of system design on implementation and ongoing support costs. Thinking in Systems will be covered to address the critical thinking skills necessary for good system design.
Prerequisite(s): Take CS-254
Corequisite(s): TAKE CSL-255
CS-257 USER EXPERIENCE DESIGN (4 Credits)
This course will expose the student to a wide variety of human-computer interaction material to enable them to understand and design positive user experiences with technology. Students will study the theory of user interface/experience design in class and will put that theory into practice through laboratory exercises and teamwork. Ways to learn from users will be covered, as well as design methods including prototyping, heuristics, and best practices. Broader design topics related to current computing trends will also be discussed from a human-centered perspective.
Prerequisite(s): TAKE CS-101
Corequisite(s): Take CSL-257
CS-258 MACHINE LEARNING (3 Credits)
Machine Learning (ML) uses interdisciplinary techniques such as statistics, linear algebra, optimization, and computer science to create automated systems that can sift through large volumes of data at high speed to make predictions or decisions without human intervention. ML is all about finding patterns in data to get computers to solve complex problems. Machine learning as a field is now incredibly pervasive, with applications spanning from business intelligence to homeland security, from analyzing biochemical interactions to structural monitoring of aging bridges, and from emissions to astrophysics, and medicine and many more. This class will familiarize students with a broad cross-section of models and algorithms for machine learning and prepare students for research or industry application of machine learning techniques.
Prerequisite(s): Take CS-133
Corequisite(s): TAKE CSL-258
CS-334 COMPUTER ORGANIZATION (3 Credits)
The Computer Organization course is designed to introduce students to computer system engineering which comprises of lower level abstractions of a computer (CPU, memory, resisters, ALU, and input/output devices), it's interconnections between hardware and software, functional performance, and cost objectives. The course also introduces students to computing data, assembly language, and basic circuit design. he use of assembly language leads to students' understanding of reduced instruction set architectures (RISC) using the MIPS as well as the SPIM simulator for the MIPS architecture. A brief introduction to hardware level security and realated protocols is provided. The course consists of three lecture hours and one two-hour laboratory per week.
Prerequisite(s): Take CS-132
Corequisite(s): Take CSL-334
CS-341 AI AND ROBOTICS (4 Credits)
A laboratory course that implements some of the artificial intelligence systems discussed in CS 141. The course is designed for computer science majors wishing to take CS 141 for credit towards the major. It must be taken at the same time as CS 141. The prerequisite is enforced strictly.
Prerequisite(s): Take CS-132
Corequisite(s): Take CSL-341
CS-346 OPERATING SYSTEMS (4 Credits)
A study of modern multiprogrammed operating systems including system structure, concurrency, process scheduling and control, memory management, file systems, and system performance. The course consists of three lecture hours and on two-hour laboratory per week. The laboratory component provides experience in concurrent programming using Java threads and in system level programming using C in a UNIX environment.
Prerequisite(s): Take CS-101
CS-354 INTRO INTERNET SYS. SECURITY (4 Credits)
Introduction to network security auditing. Students will learn how to perform the different phases of an audit, including discovery and penetration, as well as how to prevent hackers from controlling your network. This course introduces various tools to help students in the auditing process. Students will be exposed to international standards, along with time-tested methods for auditing a network efficiently, and they will be able to use specific, practical tools for counteracting network attacks. Finally, they will be able to analyze all findings and make informed recommendations for establishing the best security possible in a given scenario.
Prerequisite(s): Take CS-254
CS-390 SOFTWARE ENGINEERING (3 Credits)
The course provides an overview of software requirements analysis, the software design process, verification and validation, software maintenance, and documentation. A major component of the course is a project that provides experience in the analysis and design of a software product using an object-oriented methodology.
Prerequisite(s): TAKE CS-257
Corequisite(s): Take CSL-390
CS-401 RESEARCH METHODS (2 Credits)
As part of the Senior Capstone, students will formulate and carry out a unique research project within or across one or more areas of Computer Science. In this first capstone course, students will learn how to choose a research topic, conduct a literature review, and choose appropriate research methods. Students will also be introduced to a variety of qualitative and quantitative research methods used by Computer Science researchers.
Prerequisite(s): TAKE CS-133
CS-402 RESEARCH PRESENTATION (1 Credit)
As part of the senior capstone, students will build on their research from the first capstone course to formulate and report on their results. In this course, students will synthesize research findings, write a research paper, and give a research presentation to the department.
Prerequisite(s): TAKE CS-401
CS-480A SP.TOP:FORMAL LANG. THEORY (3 Credits)
CS-491 INTERNSHIP IN COMPUTER SCI. (1-3 Credits)
This program provides students with on-the-job training and experience which is not obtainable in classroom situations. The student is expected to secure a full-time position which involves significant work in an area of computer science. Each internship is individually arranged, subject to the approval of the computer science faculty.
Prerequisite(s): Take CS-101
CS-492 IND.STUDY IN COMP.SCIENCE (1-3 Credits)
Independent study or project in some area of computer application or computer science under supervision of computer science faculty.
Prerequisite(s): TAKE CS-133
CS-492A IND ST: DATABASE DESIGN (3 Credits)
Independent study or project in some area of computer application or computer science under supervision of computer science faculty.
Prerequisite(s): TAKE CS-133
CS-494 INTERNSHIP IN COMPUTER SCI. (0 Credits)
This program provides students with on-the-job training and experience which is not obtainable in classroom situations. The student is expected to secure a full-time position which involves significant work in an area of computer science. Each internship is individually arranged, subject to the approval of the computer science faculty.
Prerequisite(s): Take CS-101
CS-495 Technical Consulting in the Community (3 Credits)
CS 495 TECHNICAL CONSULTING IN THE COMMUNITY This course provides students with the opportunity to experience a technical consulting role with a local non-profit community organization. The student will apply professional and communication skills as he/she works with a community partner as a technical consultant. The student will spend at least three hours a week on-site at the organization and will write and present consulting reports based on his/her experience.
Prerequisite(s): Take CS-101
Restrictions: RGC.105
CSL-101 BEAUTY & JOY OF COMPUTING LAB (0 Credits)
CSL-131 OBJECT ORIENTED PROGRAMMING LAB (0 Credits)
Lab occurs once per week for two hours. Lab is taken with CS 131.
Prerequisite(s): TAKE CS-101
Corequisite(s): Take CS-131
CSL-132 ALGORITHMS & DATA STRUCTURES LAB (0 Credits)
One two-hour laboratory per week. Lab is taken with CS 132.
Corequisite(s): Take CS-132
CSL-133 INTRODUCTION TO PYTHON (1 Credit)
This course introduces the Python programming language and compares its syntax and semantics to those of Java. Fundamental programming concepts and approaches covered in prior Computer Science programming classes will be built upon to increase students' proficiency in software development. The course will focus on the application of Python to problems commonly encountered in the area of data sciencel and will guide students through initial requirements gathering, planning, development, and testing of code. The course consists of three lecture hours and one two-hour laboratory per week.
Corequisite(s): Take CS-133Take CSL-132
CSL-243 DATABASE AND BIG DATA LAB (1 Credit)
Prerequisite(s): TAKE CS-101
Corequisite(s): Take CS-243
CSL-254 COMPUTER NETWORKS LAB (0 Credits)
One two-hour laboratory per week. The laboratory component provides experience in network programming using sockets. Lab is taken with CS 254.
Prerequisite(s): TAKE CS-101
Corequisite(s): Take CS-254
CSL-257 USER EXPERIENCE DESIGN LAB (0 Credits)
Students will study the theory of user interface design in class and will put that theory into practice through laboratory exercises and team projects. Lab is taken with CS 257.
Prerequisite(s): TAKE CS-101
CSL-334 COMPUTER ORGANIZATION LAB (1 Credit)
Corequisite(s): Take CS-334
CSL-346 OPERATING SYSTEMS LAB (0 Credits)
Prerequisite(s): TAKE CS-101
Cybersecurity (CYB)
CYB-101 INTRODUCTION TO INFORMATION SECURITY (3 Credits)
This course is an elective to introduce students in any major to the Information Security field. Students will be introduced to main domains of Information Security and Information Assurance as represented in the COMPTIA Certification exam Security Plus. Upon successful completion of this course as documented through writing, objective testing, case studies, laboratory practice, and/or classroom discussion, the student will be able to: Define information security and explain why it is important Identify types of attackers, analyze vulnerabilites, attacks and suggest appropriate defenses. Descrive various software security applications and vulnerability scanning tools. Explain the different types of logical and physical access control. Understand and explain authentication, authorization and accounting as it relates to compter security. Define and explain risk, risk management, and penetration testing.
CYB-180 SPECIAL TOPICS IN CYBERSECURITY (3 Credits)
An intensive study of an aspect of computer science not fully treated in a regularly scheduled course.
Prerequisite(s): CS-132
CYB-202 CYBERSECURITY ETHICS (3 Credits)
This course introduces students to ethical questions that come up in all areas of cybersecurity. We will discuss the ethical ramifications of several different types of hacks. We will explore ethical management in Cybersecurity and explore the concept of ethical hacking.
CYB-333 INFORMATION SECURITY (3 Credits)
This course is designed to introduce students to the development of information security policies and planning. Information systems, and the tools and techniques needed to establish, monitor and maintain information security will be examined.
CYB-354 INTRO TO NETWORK SECTURITY (3 Credits)
Introduction to network security auditing. Students will learn how to perform the different phases of an audit, including discovery and penetration, as well as how to prevent hackers from controlling your network. This course introduces various tools to help students in the auditing process. Students will be exposed to international standards, along with time-tested methods for auditing a network efficiently, and they will be able to use specific, practical tools for counteracting network attacks. Finall y, they will be able to analyze all findings and make informed recommendations for establishing the best security possible in a given scenario.
Prerequisite(s): TAKE CS-254
Corequisite(s): TAKE CYBL-354
CYB-355 COMPUTER CRIME (3 Credits)
Computer criminals are becoming ever more technically sophisticated, and it's an increasing challenge to keep up with their methods. This course will focus on computer crimes, what they are, how to prevent them, and how to detect, investigate prosecute them if they do occur and prevent them. Topics such as the impact of computer crimes, digital forensics, as well as computer crime laws will also be covered.
Prerequisite(s): TAKE CS-254
CYB-360 DIGITAL FORENSICS (3 Credits)
This course will provide an introduction to, and develop a foundation in, core concepts related to the field of digital forensics. Topics include an overview of computer crime, computer forensics law, forensic acquisition in lab and field environments, digital triage, mobile devices, identification of forensic artifacts in various operating systems, network forensics, report writing, ethical considerations in forensics, and courtroom testimony. The course will include lectures and hands on experiences using a vareity of forensic tools.
Prerequisite(s): Take CYB-355
CYB-365 INVESTIGATIVE SOFTWARE TOOLS (3 Credits)
Intelligence led policing and intelligence based investigative strategies are coming to the forefront of law enforcement. Private industry is alwso becoming increasingly aware of the strategic intelligence model as it applies to corporate planning, competitce practices and maintaining corporate integrity. This course is designed to introduce students to several key software tools that are widely used and considered essential for intelligence research and criminal investigations. These software tools will include, but not be limited to, Analyst Notebook, iBase, and Idea. Students will be given a thorough understanding of how to apply these tools in the course of the intelligence process and/or during the course of a criminal investigation. The course will culminate with students preparing a project using all the software tools introduced during the course.
CYB-380 SPECIAL TOPICS IN CYBERSECURITY (1-3 Credits)
An intensive study of an aspect of computer science not fully treated in a regularly scheduled course.
Prerequisite(s): CS-132
CYB-380A SP TOP IN CYBERSECURITY: ADVANCED CYBERSECURITY (3 Credits)
An intensive study of an aspect of computer science not fully treated in a regularly scheduled course.
Prerequisite(s): CS-380C
CYB-380B SP TOP IN CYBERSECURITY:CYBERSECURITY INVESTIGATION (3 Credits)
An intensive study of an aspect of computer science not fully treated in a regularly scheduled course.
Prerequisite(s): CYB-101
CYB-380C SPECIAL TOPICS: LAW & POLICIES INVESTIGATION (3 Credits)
An intensive study of an aspect of computer science not fully treated in a regularly scheduled course.
Prerequisite(s): CYB-101
CYB-380D SP TOP: THREAT HUNTING FOR MS WINDOWS (3 Credits)
An intensive study of an aspect of computer science not fully treated in a regularly scheduled course.
Prerequisite(s): CYB-101
CYB-380E SP TOP:HOW ETHICAL HACKERS CAN COUNTER BLACK HAT HACKERS (1 Credit)
An intensive study of an aspect of computer science not fully treated in a regularly scheduled course.
Prerequisite(s): CYB-101
CYB-380F SP TOP:PSYCHOLOGY OF A HACKER (1 Credit)
An intensive study of an aspect of computer science not fully treated in a regularly scheduled course.
Prerequisite(s): CYB-101
CYB-380G SP TOP:PRACTICAL HACKING/CYBERSECURITY WITH PYTHON (3 Credits)
An intensive study of an aspect of computer science not fully treated in a regularly scheduled course.
Prerequisite(s): CYB-101
CYB-410 INTRO TO CRYPTOGRAPHY (3 Credits)
In this course, the key terms, concepts and principles of cryptography are defined and explained. Application of cryptographic techniques to ensure confidentiality, integrity, authentication, access control, and non-repudiation issues will also be covered. Other topics will include the history of classical cryptographic and cryptanalytic techniques, modern symmetric and asymmetric algorithms, Federal Information Processing Standard (FIPS) algorithms, random and pseudo-random number generators and cryptographic hash functions.
CYB-411 INTRO TO PENETRATION TESTING (3 Credits)
To protect an organization's critical information and assests, cybersecurity professionals must regularly assess an information system's security controls through a process called penetration testing. This course will introduce students to the overall process and principles, as well as more deeply explore the identification of systems, services, and vulnerabilities. Students will be expected to stay up-to-date on emerging security flaws throughout the course, and understand the need for life-long learning in this domain.
Prerequisite(s): CYB-202 CYB-354 CYB-333
Corequisite(s): Take CYBL-411
CYB-491 INTERNSHIP IN CYBERSECURITY (1-3 Credits)
This course provides students with on-the-job training and experience which is not obtainable in classroom situations. The student is expected to secure a full-time position which involves significant work in an area of cybersecurity. Each internship is individually arranged, subject to the approval of the cybersecurity faculty.
CYB-492 IND STUDY IN CYBERSECURITY (1-3 Credits)
Independent study or project in some area of cybersecurity and its application under supervision of cybersecurity faculty.
CYBL-354 INTRO TO NETWORK SECURITY LAB (1 Credit)
Introduction to network security auditing. Students will learn how to perform the different phases of an audit, including discovery and penetration, as well as how to prevent hackers from controlling your network. This course introduces various tools to help students in the auditing process. Students will be exposed to international standards, along with time-tested methods for auditing a network efficiently, and they will be able to use specific, practical tools for counteracting network attacks. Finall y, they will be able to analyze all findings and make informed recommendations for establishing the best security possible in a given scenario.
Prerequisite(s): Take CYB-354TAKE CS-254
CYBL-411 INTRO TO PENETRATION TEST LAB (1 Credit)
Lab component of CYB-411. Through the laboratory component, students will analyze code to identify common flaws, build, and test running systems for vulnerabilities. Students will also learn to document and prioritize risks and technical recommenations for addressing security vulnerabilites. Students will be expected to stay up-to-date on emerging security flaws throughout the course, and understand the need for life-long learning in this domain.
Prerequisite(s): CYB-354 CYB-333
Corequisite(s): Take CYB-411
Data Science (DS)
DS-107 INTRO TO DATA & DATA ANALYTICS (3 Credits)
This introduction begins with many of the topics of traditional statistics used in Data Science including data collection, cleaning, visual display, summary statistics and their distributions. It continues with methods for data exploration, introduces multivariate data, including covariance, the selection of predictor variables and reduction of dimension. It concludes with a brief introduction to information theory especially as related to variable selection and the close cousins, data comprehension and knowledge discovery.
DS-201 DATA SCIENCE TOOLKIT (3 Credits)
An introduction to traditional methods of Data Science with an emphasis on the relevant mathematics, statistics and theory. Topics to include regression, clustering, discriminant analysis, naive Bayes, variable selection, decision trees, and time series.
Prerequisite(s): TAKE CS-133 CSL-133
Corequisite(s): TAKE DSL-201
DS-301 EMERGING TRENDS IN DATA SCIENCE (3 Credits)
An introduction to the established Data Science tool kit including clustering, the many faces of regression, random forests, and support vector machines. An optional introduction to neural nets and deep learning. An introduction to the presentation of Data Science results including proper visualization and storytelling. The course consists of three lecture hours and one two-hour laboratory per week.
Prerequisite(s): TAKE DS-201 DSL-201
Corequisite(s): TAKE DSL-301
DS-351 DATA SCIENCE CASE STUDIES (3 Credits)
This course explores the challenges and opportunities in the evolving field of Data Science by evaluating case studies across the entire data science pipeline. Classes are interspersed with student presentations and discussions around best practices, technical implementation, and ethical concerns. Based on the reviewed case studies, students will analyze the future of Data Science and their role within the field.
DS-401 SENIOR COMPREHENSIVE PROJECT I (2 Credits)
As part of the senior capstone, students will formulate and carry out a Data Science project within or across one or more areas of their major. In this first capstone course, students will learn how to choose a topic, conduct a literature review, and choose appropriate methods.
DS-402 SENIOR COMPREHENSIVE PROJECT II (1 Credit)
As part of the senior capstone, students will build on their work from the first capstone course to formulate and report on their results. In this course, students will synthesize findings, write a paper, and give a presentation to the department.
Prerequisite(s): TAKE DS-401
DSL-201 DATA SCIENCE TOOLKIT LAB (1 Credit)
An introduction to traditional methods of Data Science with an emphasis on the relevant mathematics, statistics and theory. Topics to include regression, clustering, discriminant analysis, naive Bayes, variable selection, decision trees, and time series.
Prerequisite(s): TAKE CS-133 CSL-133
Corequisite(s): TAKE DS-201
DSL-301 EMERGING TRENDS IN DATA SCIENCE LAB (1 Credit)
An introduction to the established Data Science tool kit including clustering, the many faces of regression, random forests, and support vector machines. An optional introduction to neural nets and deep learning. An introduction to the presentation of Data Science results including proper visualization and storytelling. The course consists of three lecture hours and one two-hour laboratory per week.
Prerequisite(s): TAKE DS-201 DSL-201
Corequisite(s): TAKE DS-301