Introduces programming and is aimed at students with no prior programming knowledge or skills. Covers basics of programming including variables, decision-making statements, and iterative statements. Students create logical solutions to novel problems using tools such as pseudocode and flowchart. Students write, test, and run elementary programs to solve problems using a high-level programming language.
Introduces professional-level programming techniques, designed for individuals seeking foundational knowledge in programming or aspiring to enter the field of software development. Covers the fundamentals of how to write complete computer programs of moderate size and rooted in real-world problems, using basic data types, functions, loops, if-else statements, and objects. Students will learn top-down design, functional decomposition, mathematical and reasoning skills needed for computer science, software testing, and pair programming. Requires no previous programming experience.
Prepares students to employ the principles of object-oriented programming (abstraction, encapsulation, polymorphism, and composition) in the construction of substantial programs rooted in real-world problems. Students will formulate objects (classes) to model entities in problem spaces; construct programs using the powerful technique of recursion; test code by the professional technique of unit testing; and discuss technical solutions in the context of pair programming and code reviews.
Introduces the fundamentals of data structures and algorithms in the context of a large, real-world project. Focuses on linked allocation structures: trees, linked lists, and stacks, and the application and mathematical analysis thereof. Structured around a semester-long project in which students iteratively design, develop, and test a significant software project built around real-world needs.
Design and implement a group project focused on a relatable, real-world problem. Develop a large piece of software 'from scratch' applying techniques taught in the course and learned in predecessor courses. Collaborate in a team setting of iterative (agile) development. This course will strongly prepare students for success in team-based work in both four-year education and industry.