document.write('

CSC-110 Introduction to R (1 Credits)
R is a freely available language and environment for statistical computing and graphics. This course is a one-credit introduction to R. Course objectives include navigating an integrated development environment, importing data, using data structures and functions, writing scripts and using packages.

CSC-121 Explorations in Computing (4 Credits)
(Q) A broad study of the fundamental ideas in computer science. Topics include the history of computing, data representation, machine architecture, networking and the Internet, algorithms, programming languages, information systems, artificial intelligence, limitations of computing, and ethical issues. Includes in-class laboratory work. Intended primarily for non-majors. May not be taken for credit after 202.

CSC-150 Artful Computing (4 Credits)
(PA) A studio-based course on the use of computer programming to create generative art in various forms, including 2-D, 3-D, and animated images. Additional topics may include cinematic effects, particle systems, ray-tracing, autostereograms, and computer-generated music and poetry.

CSC-201 Introduction to Computer Science (4 Credits)
Problem solving and program development using the Python programming language. This course covers fundamental ideas of procedural and object-oriented programming, including elementary control structures (loops, conditionals, functions), objects and classes, and structured data types. These ideas will be explored using application areas such as graphics/games, data analysis, business, and science. Prerequisite: Placement into MATH-140 or higher.

CSC-202 Data Structures and Object Oriented Prog (4 Credits)
A study of standard data structures including lists, stacks, queues, trees, sets, and maps, with an introduction to space and time complexity analysis. Coursework requires object-oriented programming in the Java language, including the use of polymorphism and inheritance. Co-registration with CSC-202L (lab) is required. Prerequisite: C or better in CSC 201 or permission of the department.

CSC-202L Lab component of CSC-202 (0 Credits)

CSC-215 Web Programming (4 Credits)
Introduction to web programming, including HTML and CSS, as well as both the server side and client-side use of scripting languages such as JavaScript and PHP. Includes significant project work and in-class lab work. Prerequisite: C or better in CSC 201.

CSC-260 Modeling Our World (4 Credits)
(PN) Introduces the use of computer programming to model various phenomena in the natural and social sciences. Includes agent-based modeling, the emergence of complex patterns from simple rules, and fundamental questions about the nature of models. Connections between quantitative data and qualitative understanding are explored. Application areas may come from a wide range of disciplines, including geology, physics, chemistry, biology, economics, political science, and sociology. Prerequisite: CSC-201 and either MATH-140 or placement into MATH-160.

CSC-299 Directed Study (1-2 Credits)

CSC-305 Software Development (4 Credits)
This project-based course covers intermediate programming concepts in event-driven/GUI programming, object-oriented analysis and design, with a strong focus on teamwork, and the tools/skills necessary for collaborative team software development. Software engineering concepts, such as the software life cycle, models, requirement analysis, design, implementation, and testing are also discussed, and agile methodologies for project management are introduced. Significant programming required. Prerequisite: C or better in CSC 202.

CSC-310 Database Management (4 Credits)
A study of the design, implementation, and application of database systems. Topics include entity relationships, the relational model, data constraints, and the use of SQL to query and update information. Database applications are explored through hands-on laboratory work with modern DBMS, as well as programming activities/projects. Prerequisite: C or better in CSC 201.

CSC-320 Principles of Artificial Intelligence (4 Credits)
(PH) An introduction to key concepts of artificial intelligence, including knowledge representation, search algorithms, optimization techniques, and machine learning. Application areas will be selected from natural language processing, image recognition, game playing, problem solving, pattern-finding, and autonomous robotics. Philosophical questions and ethical implications of A.I. will be explored. Prerequisite: C or better in CSC 202 and MATH 250.

CSC-325 Machine Learning (4 Credits)
Fundamentals of applied machine learning using Python, Scikit-Learn, and a modern deep learning framework. This course takes a project-based hands-on approach with a focus on using existing tools and libraries to solve problems, rather than developing ML algorithms from scratch.  Topics include supervised learning (classification and regression) and unsupervised learning (clustering and dimensionality reduction), as well as semi-supervised and self-supervised ML.  Applications may be drawn from areas such as computer vision, natural language processing, business data mining, recommendation systems, and cybersecurity.  Prerequisites: CSC 201, MATH 160 and one of the following statistics classes MATH 330, BUSN 211, PSYCH 240, SOAN-227, or MATH 130.

CSC-330 Principles of Computer Systems (4 Credits)
Fundamental ideas of computer systems/organization, including memory, control processing, machine language, assembly language, data representations and number systems, and digital logic. Basic operating systems concepts such as process and memory management will also be discussed. Prerequisite: C or better in CSC 202.

CSC-332 Operating Systems (2 Credits)
Explores fundamental concepts about how an operating system manages shared hardware/resources. Topics include process scheduling, memory allocation, persistent data storage, concurrency, and caching mechanisms at multiple levels of system architecture. This course also discusses some design/implementation choices of modern operating systems. Prerequisite: C or better in CSC 330

CSC-335 Networking Fundamentals (2 Credits)
Fundamentals of computer communication network concepts and protocols at the application, transport, network and link layers. Provides a deep understanding about how local and wide-area networks (such as the Internet) operate, and how applications are built on top of this infrastructure. This knowledge also forms the basis for network security. Includes hands-on lab experience. Prerequisite: C or better in CSC 330.

CSC-336 Internet and Cybersecurity (2 Credits)
This course introduces several security challenges related to the Internet, various services/protocols that use it, and the myriad devices now connected to it. Discussion topics include: cyberattacks, counter-measures, hacktivism, the dark web, cryptography, and ethical issues regarding information security. Prerequisite: CSC 335. May not be taken for credit after taking CSC 337

CSC-350 Programming Language Principles (2 Credits)
Provides a brief survey of several different programming languages while discussing some core concepts underlying programming language design. Functional and declarative (logic-based) paradigms will be contrasted with procedural/object-oriented approaches. Prerequisite: C or better in CSC 202

CSC-371 Algorithms and Computational Theory (4 Credits)
A rigorous study of the design, implementation, and analysis of algorithms, with a light introduction to theory of computation. Topics include worst-case vs. average-case performance, complexity classes, problem-solving strategies, heuristics, and NP-complete problems. Illustrative algorithm examples are chosen from classic data structures such as heaps, balanced trees, graphs, and hash tables. Additionally, theoretical models of computing such as finite state machines, regular languages, and Turing machines are introduced. Significant programming required. Prerequisite: C or better in CSC 202 & MATH 250

CSC-380 Special Topics Seminar (2-4 Credits)
In-depth treatment of a computer science topic not regularly offered in the general curriculum. Topic announced for each offering. Prerequisites: C or better in CSC 202 or permission of instructor.

CSC-391 Coding Challenges (1 Credits)
Hands-on practice solving challenging programming problems. Solutions may require the implementation of algorithmic strategies such as recursive backtracking, dynamic programming, graph manipulation, and computational geometry. This course is intended for students interested in preparing for coding contests or technical job interviews, or simply improving their problem solving and programming skills. Prerequisite: CSC 202 and permission of instructor.

CSC-393 International Study Colloquium (3-4 Credits)

CSC-399 Directed Study (1-2 Credits)

CSC-400 Independent Study (1-2 Credits)
Prerequisite: 6 upper-division credits in computer science and consent of department chair.

CSC-480 Special Topics Seminar (2-4 Credits)
In-depth treatment of a computer science topic not regularly offered in the general curriculum. Topic announced for each offering. Prerequisites: CSC 202 or permission of instructor.

CSC-490 Senior Inquiry (4 Credits)
Synthesizing skills and knowledge acquired from previous courses and the broader liberal arts experience, this course involves the completion of a major computer science project. A typical example would be a team-based software development project including the specification, design, implementation, and testing of a mobile application. Prerequisite: Senior standing. (Open to graduating seniors or by permission of instructor only.)

CSC-ELEC AP Computer Science A (4 Credits)

');