Computer Science (CSC)

CSC 101. Introduction to Internet Studies.3 Credits.

This course covers the history of the internet, software and hardware connected with the internet, the internet and commerce, and education and social issues. The future of the internet also is explored. Browsers, search engines and email software packages are examined. The HTML markup language is introduced.

Offered: As needed

CSC 105. Introduction to Computer Science.3 Credits.

This course is an introduction to the field of computer science. Students learn about the history of computers and computing and explore the many disciplines that comprise this dynamic field such as operating systems, graphics and artificial intelligence. The algorithmic thinking necessary in the creation of computer programs is covered as students create 3D "movies" by providing instructions to characters in an animation.

Offered: As needed

CSC 109. Special Topics.3 Credits.

Offered: As needed, All

CSC 110. Programming and Problem Solving.3 Credits.

This course serves as an introduction to computer science and computer programming. Topics include fundamental programming constructs; problem-solving techniques; basic data and control structures; testing; debugging; arrays; and an introduction to object-oriented programming. A lab is included.

Corequisites: Take CSC 110L.
Offered: Every year, Fall and Spring

CSC 110L. Programming and Problem Solving Lab.1 Credit.

Students gain experience in the practice of programming and problem solving by completing a series of hands-on activities, which increase in complexity, covering a range of topics from the CSC 110 course. This course is taken in conjunction with CSC 110.

Corequisites: Take CSC 110.
Offered: Every year, Fall and Spring

CSC 111. Data Structures and Abstraction.3 Credits.

This course is a continuation of CSC 110. Topics include advanced data structures (linked lists, stacks, queues, trees, hash tables), recursion, abstract data types, introductory algorithms, and intermediate object-oriented programming. A lab is included.

Prerequisites: Take CSC 110-110L; Minimum grade C-.
Corequisites: Take CSC 111L.
Offered: Every year, All

CSC 111L. Data Structures and Abstraction Lab.1 Credit.

Students gain experience in data structures programming by completing a series of activities, which increase in complexity, covering a range of topics from the CSC 111 course. This course is taken in conjunction with CSC 111 .

Prerequisites: Take CSC 110-110L.
Corequisites: Take CSC 111.
Offered: Every year, All

CSC 199. Independent Study.1-6 Credits.

Offered: As needed

CSC 200. Special Topics.3 Credits.

Offered: As needed, All

CSC 205. Introduction to Discrete Mathematics (MA 205).3 Credits.

This course introduces students to basic concepts and structures of discrete mathematics. Topics can include propositional and predicate logic, sets and set operations, functions, proof techniques, counting problems, probability and basic number theory. Applications include computer science, biology, social sciences, law and the physical sciences.

Prerequisites: Take CSC 110-110L or MA 110 or higher; Minimum grade C-.
Offered: Every year, Spring

CSC 210. Computer Architecture and Organization.3 Credits.

Students are introduced to the organization and architecture of computers. Topics related to computer organization include digital logic, data representation, computer arithmetic, data path and control unit implementation, memory system organization, and I/O communications. Architecture topics include machine language programming, instruction set design, and factors affecting processor performance. A lab component is included.

Prerequisites: Take CSC 111-111L; Minimum grade C-.
Corequisites: Take CSC 210L.
Offered: Every year, Spring

CSC 210L. Computer Architecture and Organization Lab.1 Credit.

Students design and implement digital circuits of increasing complexity using abstraction to manage complexity. Students implement Assembly Language programs that demonstrate the instruction set architecture interface between hardware and software. This course is taken in conjunction with CSC 210.

Corequisites: Take CSC 210.
Offered: Every year, Spring

CSC 215. Algorithm Design and Analysis.3 Credits.

This course presents a study of the design and analysis of algorithms. Topics include Asymptotic Analysis, Complexity Theory, Sorting and Searching, Underlying Data Structures, Recursion, Greedy Algorithms, Divide and Conquer, Dynamic Programming, and NP-completeness. Additional topics may include Graph Algorithms, Probabilistic Algorithms, Distributed Computing and Parallel Algorithms.

Prerequisites: Take CSC 111-111L CSC 205; Minimum grade C-.
Offered: Every year, Fall

CSC 225. Introduction to Software Development (SER 225).3 Credits.

This course presents introductory software development concepts including group development, large-scale project work and theoretical aspects of object-oriented programming. The course expands on material from previous courses. Professional behavior and ethics represent an important component of this course.

Prerequisites: Take CSC 111-111L; Minimum grade C-.
Offered: Every year, Fall

CSC 299. Independent Study.1-6 Credits.

Offered: As needed

CSC 300. Special Topics.3 Credits.

Offered: As needed, All

CSC 310. Operating Systems and Systems Programming.3 Credits.

Students are introduced to operating systems and the software to support these systems. Topics include operating system principles, concurrency, scheduling and dispatch, virtual memory, device management, security and protection, file systems and naming, and real-time systems.

Prerequisites: Take CSC 210 CSC 225; Minimum grade C-.
Offered: Every year, Fall

CSC 315. Theory of Computation (MA 315).3 Credits.

This course provides an introduction to the classical theory of computer science. The aim is to develop a mathematical understanding of the nature of computing by trying to answer one overarching question: "What are the fundamental capabilities and limitations of computers?" Specific topics include finite automata and formal languages (How do we define a model of computation?), computability (What can be computed? and How do we prove something cannot be computed?), and complexity (What makes some problems so much harder than others to solve? and What is the P versus NP question and why is it important?).

Prerequisites: Take CSC 215 or MA 301; Minimum grade C-.
Offered: Every other year, Fall

CSC 318. Cryptography (MA 318).3 Credits.

Students study methods of transmitting information securely in the face of a malicious adversary deliberately trying to read or alter it. Participants also discuss various possible attacks on these communications. Students learn about classical private-key systems, the Data Encryption Standard (DES), the RSA public-key algorithm, discrete logarithms, hash functions and digital signatures. Additional topics may include the Advanced Encryption Standard (AES), digital cash, games, zero-knowledge techniques and information theory, as well as topics chosen by the students together with the instructor for presentations.

Prerequisites: Take MA 229 or CSC 215; Minimum grade C-.
Offered: Every other year, Spring

CSC 320. Compilers.3 Credits.

This course presents a study of the design and implementation of compilers. Topics include translators and compilers, lexical analysis, syntax analysis and parsing, runtime environments, and code generation.

Prerequisites: Take CSC 210 CSC 215 CSC 225; Minimum grade C-.
Offered: Every other year, Spring

CSC 325. Database Systems (SER 325).3 Credits.

Students are introduced to the theory and application of database systems. Topics include data modeling and the relational model, query languages, relational database design, transaction processing, databases and physical database design.

Prerequisites: Take CSC 215 CSC 225; Minimum grade C-.
Offered: Every other year, Fall

CSC 340. Networking and Distributed Processing.3 Credits.

This course introduces students to net-centric computing, the web as an example of client-server computing, building internet and web applications, communications and networking, distributed object systems, collaboration technology and groupware, distributed operating systems and distributed systems.

Prerequisites: Take CSC 215 CSC 225; Minimum grade C-.
Offered: Every other year, Spring

CSC 345. Computer Graphics.3 Credits.

This course is an introduction to theory and programming in computer graphics. Topics include graphic systems, fundamental techniques in graphics, basic rendering, basic geometric modeling, visualization, virtual reality, computer animation, advanced rendering and advanced geometric modeling.

Prerequisites: Take CSC 215 CSC 225; Minimum grade C-.
Offered: As needed

CSC 350. Intelligent Systems.3 Credits.

Artificial Intelligence is an umbrella topic covering efforts in a variety of fields all searching for one goal: to get computers to perform well at tasks at which humans excel. Topics include fundamental issues in intelligent systems, search and optimization methods, knowledge representation and reasoning, learning, agents, computer vision, natural language processing, pattern recognition, advanced machine learning, robotics, knowledge-based systems, neural networks and genetic algorithms.

Prerequisites: Take CSC 215 CSC 225; Minimum grade C-.
Offered: Every other year, Spring

CSC 355. Programming Language Concepts.3 Credits.

This course represents an introduction to different paradigms of programming languages and their role in the problem-solving process. Topics covered include history and overview of programming languages, introduction to language translation, language translation systems, models of execution control, declaration, modularity, and storage management, programming language semantics, functional programming paradigms, object-oriented programming paradigms, logic programming paradigms, language-based constructs for parallelism.

Prerequisites: Take CSC 215 CSC 225; Minimum grade C-.
Offered: As needed

CSC 361. Numerical Analysis (MA 361).3 Credits.

This course covers selected techniques for obtaining numerical values of functions, solving linear and nonlinear equations, interpolation, numerical differentiation and integration, error analysis and numerical stability.

Prerequisites: Take MA 142 or MA 152 and MA 229; Minimum grade C-.
Offered: As needed

CSC 375. Advanced Topics in Computer Science (SER 300).3 Credits.

This course explores advanced computer science topics not available in other courses, as well as new topics as they emerge in this rapidly evolving discipline. Topics may be interdisciplinary.

Prerequisites: Take CSC 215 CSC 225; Minimum grade C-.
Offered: Every year, Spring

CSC 399. Independent Study.1-6 Credits.

CSC 491. Senior Project 1.3 Credits.

This is the first of a two-course sequence required for all computer science majors (beginning with students who entered the program in 2006). Students explore the profession of computing by working independently, under the guidance of a faculty member, on a significant computing project. Participants review professional literature and explore professional ethics, as they work to synthesize their knowledge of computer science. During the first part of the project, students develop a project plan and submit a proposal for approval to their adviser. Students meet regularly to present and discuss progress. Senior status is required.

Prerequisites: Take CSC 215 CSC 225; Minimum grade C-.
Offered: Every year, Fall

CSC 492. Senior Project 2.1-3 Credits.

This is the second of a two-course sequence required for all computer science majors (beginning with students who entered the program in 2006). Students explore the profession of computing by working independently, under the guidance of a faculty member, on a significant computing project. Participants review professional literature and explore professional ethics, as they work to synthesize their knowledge of computer science. During the second part of the project, students complete work on their project, and create an appropriate formal presentation of their results.

Prerequisites: Take CSC 491; Minimum grade C-.
Offered: Every year, Spring

CSC 493. Senior Thesis I.1 Credit.

This course is the first part of a two-semester series in which students work independently under the guidance of a faculty member on the development of a senior thesis. The CSC 493/CSC 494 course sequence provides students with an opportunity to synthesize their knowledge of computer science. Students explore the profession of computing by engaging in the professional literature and exploration of professional ethics. Students meet regularly to present and discuss progress. During the first course in the sequence, students develop a proposal for their thesis, including a literature review, and submit to their adviser for approval.

Prerequisites: Take CSC 215 CSC 225; Minimum grade C-; senior status is required.
Offered: Every year, Fall

CSC 494. Senior Thesis II.3 Credits.

This course is the second part of a two-semester series in which students work independently under the guidance of a faculty member on a significant thesis culminating in the development of a senior thesis. The CSC 493/CSC 494 course sequence provides students with an opportunity to synthesize their knowledge of computer science. Students explore the profession of computing by engaging in the professional literature and exploration of professional ethics. Students meet regularly to present and discuss progress. During the second part in the sequence, students complete the thesis proposed in CSC 493.

Prerequisites: Take CSC 493; Minimum grade C-.
Offered: Every year, Spring

CSC 499. Independent Study.1-6 Credits.