300

CSC 310 Programming Languages

This course provides a comprehensive exploration of programming languages, starting with the theory of computation, including regular languages, grammars, and automata. Students will examine how computers execute operations at the hardware level and how assembly languages relate to machine architecture. The course then covers the process of compiling high-level code into machine-readable instructions. Students will also explore different programming language paradigms and their design principles, focusing on how languages abstract away hardware complexities to enable efficient software development. The student will also study three different programming languages and write a short project in each.

3

Prerequisites

CSC 145

CSC 315 Introduction to Data Science

Data science is an interdisciplinary field which blends mathematics, computer science, and various domain-specific fields (such as bioinformatics). The goal is to extract usable information from large sets of data. This course will be an introduction to data science using R, Python or a similar language. Emphasis will be on exploratory data analysis, visualization, model fitting, classification, and prediction.
3

Prerequisites

PSY 204 or MTH 204, MTH 401, or ECO 212

Cross Listed Courses

MTH 315

CSC 320 Evolutionary Algorithms

Studies the use of simulated evolution in computer science and biology. Primary emphasis will be on the use of evolutionary and genetic algorithms as tools for solving combinatorial optimization problems (including problems arising in bioinformatics). Secondary emphasis will be placed on construction of computer models designed to illuminate aspects of evolutionary theory (e.g. the computer evolution of strategies for playing the prisoner's dilemma as a model for the evolution of altruistic traits).

3

Prerequisites

CSC 141, CSC 144, CSC 171, CSC 230 or CSC 280

CSC 330 Cryptography

Covers the fundamental algorithms used in both symmetric key and public key cryptography. Algorithms include AES, Diffie-Hellman, RSA, elliptic curve cryptography, as well as cryptographical hash algorithms. Both mathematical foundations and computer implementations will be discussed during the course.

3

Prerequisites

CSC 141, CSC 144, CSC 171, or CSC 280; and MTH 220.

Cross Listed Courses

MTH 330, SFE 330

CSC 335 Junior Seminar

Is designed to teach computer science and computer information science majors the skills necessary to learn computer science on their own and communicate their knowledge to others in oral and written form. All students will attend presentations made by senior computer science students. Students will be required to write a short, independently-researched paper and present it to the other students in the junior seminar.

1

Prerequisites

Junior Standing

Cross Listed Courses

MTH 335

CSC 344 Algorithms and Complexity

Will introduce concepts of algorithm analysis, strategies, time and resource complexity and basic computability. Emphasizes algorithm development, adaptation, and cost/benefit analysis.

3

Prerequisites

CSC 145 and MTH 220 (May be taken concurrently with instructor permission)

CSC 351 Current Topics in Computer Information Science

Is a seminar in information resource management covering such topics as office automation, networks, distributed data processing, data integrity, and decision support systems.

3

Prerequisites

Junior standing or permission of instructor

CSC 356 Advanced Networking

This course focuses on the design, management, and implementation of wired and wireless computer networks. Course topics expand on network software and management, switch and routing technologies, security fundamentals for devices, and integrating automation and programming into networks.  Topics may include software defined networks, security issues and other advanced topics. 

3

Prerequisites

CSC 256 or (SFE 240 and permission of instructor)

CSC 376 Software as a Service

This course addresses the architectural components of distributed software architectures including modular open systems approach (MOSA), microservices and other cloud-native architectures. Course emphasis is on Software as a Service (SaaS). Examines the practical and security considerations implied. Topics include the considerations and advantages of SaaS, common architectures and examples, applications and adoptions. A course project focusing on the design, development and testing of a SaaS chain.  

3

Prerequisites

CSC 276

CSC 381 Web Dev: The Front End

The front end is in charge of the website's aesthetic appearance and feel. Front-end developers strike a balance between art and science, combining code with visual design principles to create a great user experience. This course introduces one front-end web technology and includes a team course project focusing on the user experience of the implemented design using professional processes and tools. 

3

Prerequisites

CSC 145 and CSC 261

CSC 382 Web Dev: The Back End

Back end designers are responsible for a website's architecture and logic in the background. Back end developers strike the balance between efficiency and effectiveness of the site. This course introduces one back-end web technology and includes a team course project focusing on the quality of the implemented back-end design using professional processes and tools. 

3

Prerequisites

CSC 145 and CSC 261

CSC 385 The User Experience

This course deals with understanding and evaluating the user experience of technology.  including the processes and techniques of UX design. Process topics include contextual inquiry, contextual analysis, modeling, design ideation and sketching, conceptual design, prototyping, UX testing evaluation and reporting. Learning focuses on the development and presentation of a team-based UX project.  

3

Prerequisites

COM281 or CSC381 or PSY310 or PSY318 or permission of the instructor