CTY’s mathematics, science, and computer science courses are dedicated to Dr. Richard P. Longaker, Provost of Johns Hopkins University from 1979 to 1987, in recognition of his advocacy and guidance through CTY’s initial years. Computer Science is an area of study that continues to gain importance for its wide applications. CTY math and computer science courses aim to give students the skills, knowledge, and perspective to understand the multifaceted nature of mathematics. Students move beyond basic skills to gain greater understanding of both the underlying meanings of mathematical concepts and the intriguing ways math can be applied and extended in a range of contexts. Please refer to our Eligibility web page for minimum test score requirements for computer science courses. Sample syllabi for all courses are also available.
Fundamentals of Computer Science
Prerequisite: Algebra I.
This course introduces students to three major areas of computer science: theory and algorithms, hardware systems, and software systems. The theoretical component of the course covers the study of algorithms, Boolean algebra, binary mathematics, and the theory of computation. While studying hardware systems, students learn about the physical components of computers, digital logic, and computer architecture. In software systems, students are introduced to elements of programming languages, compilers, and computer graphics. The course also introduces operating systems, a key link between hardware and software, and computer networks. This course helps prepare students for AP Computer Science and gives them a good indication of what they might see as a computer science major in college. While learning a particular programming language is not a goal of the course, students apply and illustrate the concepts they are learning through work on programming projects. Sample text: An Invitation to Computer Science, Schneider and Gersting. Lab Fee: $65 Session 1: Lancaster, Los Angeles, Saratoga Springs Session 2: Lancaster, Los Angeles, Saratoga Springs Top
Theory of Computation
Prerequisite: Algebra I and one of these CTY courses: Mathematical Logic, Number Theory, Fundamentals of Computer Science, or Data Structures and Algorithms.
In this theoretical mathematics and computer science course, students move beyond the computer to delve into the rich mathematical foundation of computer science. They consider the efficiency of various computational methods and explore what is possible and impossible in the digital world. Students investigate several theoretical representations of computers, including finite automata and Turing machines, allowing them to use math to reason abstractly about the capabilities of computers. To aid in their exploration of the theory of computation, students acquire tools such as formal logic, combinatorics, and mathematical induction. These ideas are used extensively in many advanced math courses. Students investigate computability (which problems computers can solve) and then move on to complexity (how much time a solution requires). They also explore an important application of these concepts, the P vs. NP problem: Are there problems for which an answer could be quickly verified, but computing the answer would take impossibly long? The Clay Mathematics Institute offers a $1,000,000 reward for a solution. Note: While some course topics are useful in programming, the class does not use computers, and no programming background is required. Sample text: Materials compiled by the instructor. Session 1: Lancaster Session 2: Not offered Top
Data Structures and Algorithms
Prerequisite: CTY’s Fundamentals of Computer Science or an equivalent computer science programming experience. In order for a computer to find a solution to a particular problem, it is necessary to formalize the problem in terms of a mathematical model, find a suitable algorithm to solve the problem in that model, and then implement the algorithm in a particular programming language. In this class, students learn how to design, analyze, and implement these algorithms. Students begin by studying data structures such as arrays, lists, stacks, queues, trees, and sets in order to learn different ways of organizing data. Students then analyze many sorting, searching, and graphing algorithms to determine their run-time efficiency. By examining these fundamental algorithms, students learn how design decisions can affect the efficiency of an algorithm. A series of programming assignments helps students learn how to put these abstract ideas into practice. By the end of this course, students acquire the conceptual tools necessary to model and analyze computational problems. Sample text: Data Structures and Algorithm Analysis, Weiss. Session 1: Lancaster Session 2: Not offered Top |