CSC Undergrad Restricted Electives - Spring 2020

CSC 302 - Introduction to Numerical Methods - Dr. Heber

Prerequisites: CSC 116 with a grade of C or higher and [MA 305 or MA 405]

Semester/Year: Spring 2020

Description: This class is being co-taught by Dr. Stallmann.

Numerical computations with digital computers; floating point arithmetic and implications of round-off error. Algorithms and computer techniques for the numerical solution of problems in: function evaluation; zeros of functions; interpolation; numerical differentiation and integration; linear systems of equations; curve fitting; solutions of non-linear equations; numerical solutions of ordinary differential equations.

CSC 401 - 001 - Data and Computer Communications Networks - Dr. Yu

Prerequisites: ST 370 and CSC 246

Semester/Year: Spring 2020

Description: Basic concepts of data communication networking and computer communications architectures, including packet/circuit/virtual-circuit switching, layered communication architecture and OSI layers, general description of DLC, network and transport layers, some detailed protocol study of Ethernet, ATM and TCP/IP. Credit is not allowed for both CSC 401 and ECE 407.

CSC 402 - 001 - Networking Projects - Dr. Viniotis

Prerequisites: CSC 401

Semester/Year: Spring 2020

Description: Through a series of hands-on networking labs, students will gain experience in practical topics such as network configuration, troubleshooting, and static and dynamic routing. The course prepares students sufficiently for an industry certification.

CSC 405 - 001 - Computer Security - Dr. Kapravelos

Prerequisites: CSC 246

Semester/Year: Spring 2020

Description: Basic concepts and techniques in information security and management such as risks and vulnerabilities, applied cryptography, program security, malicious software, authentication, access control, operating systems security, multilevel security, trusted operating systems, database security, inference control, physical security, and system assurance and evaluation. Coverage of high-level concepts such as confidentiality, integrity, and availability applied to hardware, software, and data.

CSC 411 - 001 - Introduction to Artificial Intelligence - Dr. Lynch

Prerequisites: CSC 316

Semester/Year: Spring 2020

Description: Overview and definitions of Artificial Intelligence [AI]. Search, including depth-first and breadth-first techniques with backtracking. Knowledge representation with emphasis on logical methods, Horn databases, resolution, quantification, unification, skolemization and control issues; non-monotonic reasoning; frames; semantic nets. AI systems, including planning, learning, natural language and expert systems. An AI programming language may be taught at the instructor's discretion.

CSC 422 - 001 - Automated Learning and Data Analysis - Dr. Price

Prerequisites: ST 370 and MA 305, and [CSC 226 or LOG 201]

Semester/Year: Spring 2020

Description: This is the undergraduate version of CSC 522 and is cross-listed with CSC 522.

Introduction to the problems and techniques for automated discovery of knowledge in databases. Topics include representation, evaluation, and formalization of knowledge for discovery; classification, prediction, clustering, and association methods.Selected applications in commerce, security, and bioinformatics.

Students cannot get credit for both CSC 422 and CSC 522.

CSC 453 - 001 - Software for Wireless Sensor Systems - Dr. Harfoush

Prerequisites: [CSC 246 or ECE 306] and CSC 230 and CSC 316

Semester/Year: Spring 2020

Description: Development of software for wireless computer systems. Software designs for applications and networking in this environment, including algorithms for ad hoc discovery, routing, and secure data transfer. Software interface to related sensors and subsystems including global positioning system. Algorithms for power management. Programming required.

CSC 454 - 001 - Human-Computer Interaction - Dr. Oduor

Prerequisites: CSC 316

Semester/Year: Spring 2020

Description: A survey of concepts and techniques for user interface design and human computer interaction. Emphasizes user-centered design, interface development techniques, and usability evaluation.

CSC 482 - 001 - Advanced Computer Game Projects - Dr. Roberts

Prerequisites: CSC 481

Semester/Year: Spring 2020

Description: Principles of computer game development with emphasis on 3D first-person game engines. Topics include: advanced character behavior control, procedural content generation, large scale mulit-player game design and infrastructure, serious games for education, training and other applications, the game production pipeline and project built on top of a commercial game engine. Consideration of the game production pipeline, including project pitches, requirements and design detail. Programming project with written and oral reporting is required. Enrollment open to CSC majors only.

CSC 484 - 001 - Building Game AI - Dr. Martens

Prerequisites: CSC 316

Semester/Year: Spring 2020

Description: This is the undergraduate version of CSC 584 and is cross-listed with CSC 584.

In this course we will examine Artificial Intelligence [AI] techniques that are used in the design of computer games. We will look at techniques for game playing as well as the design of AI opponents tasked with creating "good experiences" for players. The course will begin with a discussion of general AI, common algorithms, data structures, and representations. From there, we will cover topics in character movement, pathfinding, decision making, strategy, tactics, and learning. In a sequence of programming assignments students will create increasingly sophisticated AI implementations. Students will also critically review the projects conducted by graduate students enrolled in CSC584. CSC majors only.

Students cannot get credit for both CSC 484 and CSC 584.

CSC 495 - 001 - Surviving Intractability - Dr. Stallmann

Prerequisites: CSC 316

Semester/Year: Spring 2020

Description: Most optimization problems that arise in applications are NP-hard (or worse). The objective of this course is to familiarize the student with both the theory of NP-completeness (why these problems are hard) and, more importantly, algorithm and heuristic techniques that have been used to successfully 'solve' these problems in practice. Among the topics are approximation algorithms, greedy algorithms, local search, meta-heuristics, branch and bound, and integer programming. Students will work in teams to evaluate these techniques experimentally.

CSC 495 - 002 - Privacy - Dr. Das

Prerequisites: CSC 316 (required), ST 370 (recommended)

Semester/Year: Spring 2020

Description: Privacy is a growing concern in our modern society. We interact and share our personal information with a wide variety of organizations, including financial and healthcare institutions, web service providers and social networks. Many times such personal information is inappropriately collected, used or shared, often without our awareness. This course introduces privacy in a broad sense, with the aim of providing students an overview of the challenging and emerging research topics in privacy.

This course will expose students to many of the issues that privacy engineers, program managers, researchers and designers deal with in industry. By the end of the course, students will learn about the following areas in privacy:

CSC 495 - 008 - Visual Narrative Studio - Dr. Jhala

Prerequisites: CSC 316 (required), CSC 460 (recommended)

Semester/Year: Spring 2020

Description: An intensive study of advanced development processes, software, and various computer platforms used in the creation of computational media in an interdisciplinary setting in tandem with ADN 560: Advanced Animation Studio class in the Department of Art and Design.  Course principles will be applied in a number of individual assignments related to the design and development of computational media and an interdisciplinary team-based semester-long project. Student activities in the course will include ideation, storyboarding, project pitches, development tools, prototyping, and final polish for projects. Classes will primarily be student working group meetings involving project review with the instructor, but will also include a mix of lecture format, student presentations and guest presentations from computational media designers. 

CSC 495 - 010 - Development Operations (DevOps) - Dr. Parnin

Prerequisites: CSC 326

Semester/Year: Spring 2020

Description: This is the undergraduate version of CSC 519 and is cross-listed with CSC 519.

Students must obtain permission from Dr. Parnin, via email, to be enrolled in CSC 495 - 010 for Spring 2020 .

Modern software development organizations require DevOps engineers to automate and maintain software engineering processes and production infrastructure. In this course, you will gain practical exposure to the skills, tools, and knowledge needed in automating software engineering processes and infrastructure necessary for continuous deployment of software. Students will have the chance to build new or extend existing software engineering tools and design an automated deployment pipeline.

Students may not recieve credit for CSC 495 (DevOps), CSC 419 (DevOps), and CSC 519 (DevOps).

CSC 499 - 001 - Independent Research - TBA

Prerequisites: n/a

Semester/Year: Spring 2020


Undergraduate students who are engaged in research projects supervised by faculty may wish to substitute hours of CSC 499 (Independent Research in Computer Science) for a Computer Science Restricted Elective or Other Restricted Elective.

These substitutions must be approved by the Director of Undergraduate Programs on a case-by-case basis. Substitutions will be evaluated based on a written proposal. Students are expected to provide a mentor-approved written summary of their research experience to the Office of Undergraduate Advising before credit will be recorded for CSC 499. Students may substitute a maximum of six hours of CSC 499 for CSC Restricted Elective and/or Other Restricted Elective. CSC 499 is only offered on a credit-only ("S/U") grading basis.

For more information: