The following courses are currently offered in Computer Science at Berry College.

- A projected schedule of course offerings.
- Suggested plans of study.

**CSC 103. Creative Computing – 3-0-3**

An introduction to the fundamentals of computing and programming in the context of computer graphics, animation, digital sound, and interactivity. Explores the use of computation as a creative medium while developing fundamental ideas and techniques of programming, computational problem solving, algorithms, and data representation.

**CSC 104. Computing for Scientists and Engineers – 3-0-3**

An introduction to computing and programming in the context of natural and social science applications. Introduces students to problem analysis, algorithm design, basic data structures, and programming techniques with examples drawn from scientific, mathematical, and engineering domains.

**CSC 120. Designing Programs: Problem-solving and Abstraction – 3-2-4**

A rigorous study of the principles of systematic problem-solving through programming and the fundamentals of computation. Focuses on the design process that leads from problem statements to well-organized solutions. Topics include the design and implementation of programs that utilize a variety of data structures (such as records, lists, and trees), functions, conditionals, recursion, and techniques for abstraction in a functional programming language.

**CSC 219. Discrete Structures – 3-0-3**

(See MAT 219.) An introduction to discrete (non-continuous) mathematical structures and methods. Topics include mathematical logic, sets, relations, functions, sequences, recursion, induction, counting principles, graphs and trees. Applications in digital logic, computation theory, and algorithmic analysis will be emphasized.

**CSC 225. Data Structures and Algorithms – 3-0-3**

A survey of basic and advanced data structures, key algorithm design techniques, analysis of the time and space requirements of algorithms, and characterizing the difficulty of solving a problem. Applications include sorting and searching, string processing, graph theoretic, combinatorial, geometric, and numerical problems. Proficiency with programming is expected. PR: CSC 120.

**CSC 235. Physical Computing: Introduction to Embedded Systems – 2-2-3**

An introduction to electronics and microcontroller programming for prototyping physical systems that incorporate sensors, displays and actuators. Explores techniques for creating richly interactive experiences using computationally-enabled devices. PR: CSC 103 or 104 or 120.

**CSC 245. Web Technologies and Programming – 2-2-3**

Survey of the many technologies that are used to program multi-tiered, client/server, database- intensive, Web-based applications. Students will learn languages and tools for producing static web pages, generating content dynamically on the client (browser) side, generating content dynamically on the server side, and server interaction with databases. Coverage includes HTML, CSS, PHP, Javascript, AJAX, XML, MySQL, Web 2.0, web hosting, traffic, advertising, security and legal issues. PR: CSC 103 or 104 or 120.

**CSC 315. Theoretical Topics in Computer Science – 3-0-3**

Topics in algorithms, theory of computation, or logic that reveal and explore mathematical foundations of computer science and their applications. Topic chosen by the instructor. May be repeated for credit with different topics. PR: CSC 120 and CSC 219.

**CSC 345. Elements of Computing Systems – 3-0-3**

An integration of key topics from algorithms, computer architecture, operating systems, compilers, and software engineering in one unified framework. This course uses a constructive, hands-on approach in which a general-purpose computer system is built from the ground up. Ideas and techniques used in the design of modern hardware and software systems, major trade- offs, and future trends will be explored and discussed. Provides many cross-section views of the computing field, from the details of switching circuits to the high level abstraction of object- based software design. Proficiency with programming is expected. PR: CSC 120 or 235 or 245.

**CSC 420. Advanced Topics – 3-0-3**

An advanced computer science topic to be chosen by the instructor. May be repeated for credit with different topics. PR: CI.

**CSC 498. Directed Study – 1 to 3 hours**

Supervised independent study in any area of computer science that is not available as a regular course. PR: JS or SS and approval of school dean.