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. In CTY’s computer science courses, students investigate the theory, logic, and techniques of computer science. 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 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. Prerequisite: Algebra I. Lab Fee: $65 Session 1: Lancaster, Los Angeles, Loudonville, Saratoga Springs Session 2: Lancaster, Los Angeles, Loudonville, Saratoga Springs Top
Theory of Computation In this theoretical mathematics and computer science course, students move beyond basic computer literacy and programming techniques as they delve into the rich mathematical foundation of computer science. They investigate the efficiency of various computational methods and explore what is possible and impossible in the digital world. Students examine proof techniques such as mathematical induction and Cantor diagonalization as they consider a range of areas in mathematics including topics in combinatorics and different sizes of infinity. They explore the manipulation of symbols in formal languages, including those with context-free grammars such as the propositional calculus. Students work with various theoretical frameworks, like Turing machines and automata theory, to investigate issues of decidability (which problems can be solved by computer programs) as well as computability and complexity (how long a particular program would run and what resources would be required). The course culminates with an examination of the P vs. NP Millennium Prize Problem, one of the most important open questions in computer science: Are there problems for which a potential answer could be quickly verified, but where actually computing the answer would take impossibly long? The Clay Mathematics Institute has offered a $1,000,000 prize for a solution. Note: Students infrequently use programming in this course. While programming may be used to illustrate principles or introduce new concepts, it is not the focus of the course. Sample text: Materials compiled by the instructor. Prerequisite: Geometry, CTY’s Mathematical Logic, or CTY’s Fundamentals of Computer Science. Session 1: Lancaster Session 2: Not offered Top
Data Structures and Algorithms 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. Note: Programming experience is required for this course. Sample text: Data Structures and Algorithm Analysis, Weiss. Prerequisite: CTY’s Fundamentals of Computer Science or an equivalent computer science programming experience. Session 1: Lancaster Session 2: Not offered Top |