300

CSC 310 Programing Languages

Examines the basic concepts of programming languages: programming language processors, elementary and structured data types, subprograms, sequence control, data control, storage management, syntax and translation, and programming environments. 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

MTH 204, MTH 401, or ECO 212

Corequisites

Computer Science Elective

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 155 or MTH 220.

Cross Listed Courses

MTH 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

Cross Listed Courses

MTH 335

CSC 344 Algorithm and Complexity

Will introduce concepts of algorithm analysis, strategies, time and resource complexity and basic computability.

3

Prerequisites

CSC 145 and MTH 220

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 352 Software Architecture and Patterns

Provide an understanding of fundamental software architecture concepts, standards, drivers, styles, and design specification tenets including design patterns. Develop an understanding of UML method notations and tools to document architectures, and use of tradeoff methodologies (e.g., QAW, ATAM) to evaluate an architecture. Present tenets of technical and ethical debt. Throughout the course students will implement a core set of software design patterns using language of choice.
3

Prerequisites

Sophomore Standing; CSC 144 or CSC 171

Cross Listed Courses

SFE 204