In Computer Science, students are given a broad introduction to the field with a variety of Assignments. Students learn programming languages and the use of professional software development tools. In addition to two introductory courses, students may enroll in advanced electives including Data Structures and Algorithms, Relational Databases, Math and Physics Simulations, Web Engineering, Python, and Interface Design. Dalton’s Computer Science Team participates in several road trips a year competing in regional college competitions as well as the American Computer Science League. Over the past decade, Dalton has won or tied for first place at many of these events. Four times a year, juniors and seniors compete in class on theory topics and programming. Additionally, students can compete in national Linguistics competitions.
Along with Java, Python is one of the most popular programming languages currently in use, with a wide array of applications ranging from general coding to creating video games and the field of bioinformatics, and is widely used in certain college courses. The language is much closer to the English language than others used in coding, revealing more clearly the logic connections that make up computer science. This semester-long course is intended to give students foundational knowledge in Python, roughly equivalent to the material covered in Computer Science 1 & 2 with a few Python-specific topics, culminating in a final project. As such, this course is recommended only to those who have completed the first two years of Comp Sci (or have equivalent experience approved by the department), and it does not replace any course in the regular Computer Science sequence.
This course will be offered in the evening.
Spring semester course, 0.25 credits Meets 1x per week, 4:30pm to 6:30pm
In this course, students learn to use computer programming languages (e.g. HTML, CSS, and Javascript) as expressive mediums to make interactive stories, personal websites, digital presents, simulations, and other projects they are excited about. By the end of this class, each student will have a compelling portfolio of programming projects that reflect their tastes, interests, and identities.
This course continues to broaden students’ exposure to a variety of coding languages and techniques. The course begins with a foundation in fundamental data types before moving to explore digital graphics, data structures, methods and objects. Each Assignment finishes with a creative project, culminating in a robust student portfolio at the end of the year.
With so much data in the world, programmers must consider how to organize data so that it can be used effectively later on. This course focuses on how we represent, store, and process data, and the analysis of algorithms. Students will learn techniques such as lists, stacks, trees, linked lists, and algorithms such as sorting, searching, and hashing. This course continues a common collegiate academic trajectory.
This course is a transdisciplinary offering that blends physics, mathematics, and computer science using a holistic approach. The skills that this class will teach will be different from what one would expect from the addition of physics, math, and computer science. Student assignments will reflect concepts from all three disciplines to better understand projectiles; orbitals; springs; particles; matrices of several dimensions; and areas under curves. Python and java programming languages will be used and data visualizations will be created as part of the course. Dedicated time outside of the classroom is expected.
This course will explore human natural language and as it is spoken, signed, and written by humans. Students will uncover patterns and similarities across the thousands of languages used today. This pursuit is informed through building formal grammatical structures (e.g., Universal Grammar), using inclusive alphabets (e.g., International Phonetic Language), and tracing languages to common ancestors (e.g., Proto-Indo-European). This course will enrich students' continued understanding of their studied language using the multiple scientific perspectives of linguistic study (phonology, semantics, syntax, sociolinguistics, language acquisition) as well as enrich their understanding of language through comparison between their studied languages and related languages.
Prerequisite: Level 2 language and Computer Science 2 and/or receive departmental permission
Web sites are of central importance in today's world, and learning the web toolkit is transformative. This course will focus on the challenges involved in developing software for the web, with a particular focus on quickly prototyping and building. Students will learn to collaboratively construct web applications large and small, exploiting and expanding the skill set of each student in the class. As a team, students will participate in hackathons, and push themselves to have tools ready to build quickly and iterate. The content of the course will vary per student and be based on experience and strengths.
Web sites are of central importance in today's world, and learning the web toolkit is transformative. This course will focus on the challenges involved in developing software for the web, with a particular focus on quickly prototyping and building. We will learn to collaboratively construct web applications large and small, exploiting and expanding the skill set of each student in the class. As a team we will participate in hackathons, and push ourselves to have tools ready to build quickly and iterate. The content of the course will vary per student and be based on experience and strengths.
The major emphasis of the course is advanced programming methodology, algorithms, and database systems. Topics vary each year based on interest and expertise.
The goal of a computer simulation is to approximate the behavior of a real-world or hypothetical system or set of processes. In this course, students will use programming tools to model, simulate, and analyze these systems. This involves choosing an appropriate model, developing algorithms, and then writing suitable and efficient code to implement the model. The curriculum will be segmented into several thematic units, and students will have the opportunity to create simulations that stem from their own curiosities and interests. Sample projects may include: animal behavior, traffic management (e.g., cars, computer networks, pedestrians), ecosystems, games, and economic markets.
This course is an introduction to the fundamental discrete structures and logical thinking that support the formal foundation of computer science. Topics include logic, sets, recursion and induction, relations, graphs, and Boolean algebra. These will be explored through Assignments centered around areas of algorithms, coding theory, cryptography, information theory, quantum computing, symbolic computing, and type theory.
This is an introductory course in virtual, augmented, and mixed reality systems. Students will explore modern hardware and the algorithms that produce these experiences, the software and languages to develop these programs, and the cognitive foundations of the immersion for the user.
This course seeks to support advanced Computer Science students in developing and implementing novel projects based on research and experimentation with code and computational hardware. Students will meet weekly to develop their ideas, identify resources, and provide project updates. Students in this class will have prioritized access to computational tools such as our in-house Windows workstation and will be supported in access to virtual tools, as well. The course will end with a public presentation of the project on the web. Participation in the course offers an invitation to attend the Open Source Arts Contributor Conference in Denver in April 2024.
Building on the fundamental skills learned in Web Engineering, this course is for students who wish to continue their practice through practical projects. Students will contribute to real-world web projects through open-source and Dalton-specific repositories, and will propose and lead their own projects. These students will contribute examples and code issues to the Web Engineering course, and will contribute to their peers' projects at the advanced level. We will develop confidence with full-stack web programming, as well as proficiency in version control using git. This course will require independent initiative, as well as enthusiasm for learning new technologies as they arise.
This course will introduce students to the design and analysis of algorithms. Students will learn how to develop algorithms to solve a variety of computational problems, and how to analyze the efficiency and correctness of their solutions. Topics covered in the course will include sorting and searching algorithms and graph algorithms. Throughout the course, students will develop their programming skills in a language such as Python or JavaScript.
This course (or its equivalent) is a prerequisite to all Computer Science II classes at GOA. Computational thinking centers on solving problems, designing systems, and understanding human behavior. It has applications not only in computer science, but also myriad other fields of study. This introductory level course focuses on thinking like a computer scientist, especially understanding how computer scientists define and solve problems. Students begin the course by developing an understanding of what computer science is, how it can be used by people who are not programmers, and why it’s a useful skill for all people to cultivate. Within this context, students are exposed to the power and limits of computational thinking. Students are introduced to entry level programming constructs that will help them apply their knowledge of computational thinking in practical ways. They will learn how to read code and pseudocode as well as begin to develop strategies for debugging programs. By developing computational thinking and programming skills, students will have the core knowledge to define and solve problems in future computer science courses. While this course would be beneficial for any student without formal training as a programmer or computer scientist, it is intended for those with no programming experience.
This course is offered through our partnership with Global Online Academy (GOA).
One Semester Course, Fall and Spring, 0.50 credits
In this course, students design and develop games through hands-on practice. Comprised of a series of "game jams," the course asks students to solve problems and create content, developing the design and technical skills necessary to build their own games. The first month of the course is dedicated to understanding game design through game designer Jesse Schell's "lenses": different ways of looking at the same problem and answering questions that provide direction and refinement of a game's theme and structure. During this time, students also learn how to use Unity, a professional game development tool, and become familiar with the methodologies of constructing a game using such assets as graphics, sounds, and effects, and controlling events and behavior within the game using the C# programming language. Throughout the remainder of the course, students will work in teams to brainstorm and develop new games in response to a theme or challenge. Students will develop their skills in communication, project and time management, and creative problem-solving while focusing on different aspects of asset creation, design, and coding.
Prerequisites: Computer Science I: Computational Thinking or its equivalent.
In this course, students design and develop games through hands-on practice. Comprised of a series of "game jams," the course asks students to solve problems and create content, developing the design and technical skills necessary to build their own games. The first month of the course is dedicated to understanding game design through game designer Jesse Schell’s “lenses”: different ways of looking at the same problem and answering questions that provide direction and refinement of a game’s theme and structure. During this time, students also learn how to use Unity, a professional game development tool, and become familiar with the methodologies of constructing a game using such assets as graphics, sounds, and effects, and controlling events and behavior within the game using the C# programming language. Throughout the remainder of the course, students will work in teams to brainstorm and develop new games in response to a theme or challenge. Students will develop their skills in communication, project and time management, and creative problem-solving while focusing on different aspects of asset creation, design, and coding. Prerequisites: Computer Science I: Computational Thinking or its equivalent.
*Cross-listed in Mathematics and Technology
This course is offered through our partnership with Global Online Academy (GOA). Spring Semester Course, 0.50 credits
The goal of a computer simulation is to approximate the behavior of a real-world or hypothetical system or set of processes. In this course, students will use programming tools to model, simulate, and analyze these systems. This involves choosing an appropriate model, developing algorithms, and then writing suitable and efficient code to implement the model. The curriculum will be segmented into several thematic units, and students will have the opportunity to create simulations that stem from their own curiosities and interests. Sample projects may include: animal behavior, traffic management (e.g., cars, computer networks, pedestrians), ecosystems, games, and economic markets.
This course will introduce students to the main ideas in data science through tools including Google Sheets, Python, Data Commons and Tableau. Students will learn to be data explorers in project-based units, through which they will develop their understanding of data analysis, sampling, correlation/causation, bias and uncertainty, probability, modeling with data, making and evaluating data-based arguments, and the power of data in society. At the end of the course students will have a portfolio of their data science work to showcase.
3451 Data Structures This course will cover data structures used in computer science, including arrays, linked lists, stacks, queues, trees, and graphs. Students will learn how to implement data structures and analyze their performance characteristics. By the end of the course, students will have a strong understanding of data structures, how to select the appropriate data structure for a given problem, and how to implement it efficiently.
We’ve all heard that computers run on ones and zeros, but what does that actually mean? Students in this course will learn how a computer functions down to the level of a transistor — the basic building block of all digital circuits. This is a hands-on course, part of which will involve physically constructing circuits with wires and chips on a breadboard. Digital Logic CAD tools will also be employed so that larger circuits can be designed and implemented entirely within software. A final project will involve building a simple adding calculator. Topics will include: number systems, data representation, digital logic/circuit design, and Boolean algebra. This is a great course for anyone interested in math, logic, or who wants to really understand what's going on inside all of our devices.
Discrete Mathematics is the study of mathematical structures that are distinct, separable, and countable. This is different from Calculus, which is primarily concerned with continuous functions. This course is a survey of topics like logic, combinatorics, set theory, and graph theory, which form part of the foundation of theoretical computer science. Students may take this course for credit in either Math or Computer Science or both and will complete distinct projects to satisfy either requirement.
In this course we will familiarize ourselves with the fundamental algorithms and data structures that are used in today’s interactive graphics systems. The material we cover are the foundations of scientific visualization, virtual reality, computer games and film animation. We will start with topics such as pixel art, computational geometry, shape representation, transformation and animation, and move to more complex topics such as Image processing and filtering, ray tracing, and human visual perception. We will take time to see how modern game engines such as Unity and Unreal create high fidelity virtual environments. The course will include practical experience of graphical software environments such as OpenGL and GLSL shading language.
Requires Preapproval Prerequisite: Computer Science 2 and/or receive departmental permission Full Year Course, 1.0 credit
In this course we will familiarize ourselves with the fundamental algorithms and data structures that are used in today’s interactive graphics systems. The material we cover are the foundations of scientific visualization, virtual reality, computer games and film animation. We will start with topics such as pixel art, computational geometry, shape representation, transformation and animation, and move to more complex topics such as Image processing and filtering, ray tracing, and human visual perception. We will take time to see how modern game engines such as Godot 4 create high fidelity virtual environments.
Learn how to design and build apps for the iPhone and iPad and prepare to publish them in the App Store. Students will work much like a small startup: collaborating as a team, sharing designs, and learning to communicate with each other throughout the course. Students will learn the valuable skills of creativity, collaboration, and communication as they create something amazing, challenging, and worthwhile. Coding experience is NOT required and does not play a significant role in this course. Prerequisite: For this course, it is required that students have access to a computer running the most current Mac or Windows operating system. An iOS device that can run apps (iPod Touch, iPhone, or iPad) is also highly recommended.
*Cross-listed in Mathematics and Technology
This course is offered through our partnership with Global Online Academy (GOA).
XXXX NEW COURSE Java for Robotics This course is designed for advanced students delving deeper into computer science and robotics and those seeking to develop their skills with Java libraries The course is intended to be exploratory and self-directed, allowing students to pursue topics that align with their interests and expertise. Students will then work on a series of programming projects that will enable them to explore the intersection of Java programming and robotics. Project topics may include robot sensing and actuation, robot kinematics and motion control, and robot perception. In addition to these technical skills, students will learn about robotics and automation's ethical and social implications. They will gain an understanding of the impact of robotics on society and explore topics such as robot ethics, the future of work, and the role of robotics in healthcare.
This course will explore human natural language and as it is spoken, signed, and written by humans. Students will uncover patterns and similarities across the thousands of languages used today. This pursuit is informed through building formal grammatical structures (e.g., Universal Grammar), using inclusive alphabets (e.g., International Phonetic Language), and tracing languages to common ancestors (e.g., Proto-Indo-European). This course will enrich students' continued understanding of their studied language using the multiple scientific perspectives of linguistic study (phonology, semantics, syntax, sociolinguistics, language acquisition) as well as enrich their understanding of language through comparison between their studied languages and related languages.
This course will provide an introduction to open source software development and the tools and technologies used in this field. Students will learn about the principles of open source software, the advantages of using open source software, and the process of contributing to open source projects. Students will learn how to set up a development environment, use version control, and contribute to open source projects. Students will gain practical experience by working on real-world open source projects and contributing to existing projects. Participation in the course offers an invitation to the attend the Open Source Arts Contributor Conference in Denver in April 2024.