Provides students with an introduction to algorithmic thinking and design for the purpose of managing complexity and solving difficult problems. Students will be introduced to programming languages through Java and programming language constructs, standard programming tools and techniques such as debugging, compilation and execution. Covers how computer programs and software manage complexity through abstraction, encapsulation and inheritance. This course pulls from the Association for Computing and Machinery (ACM) computer science knowledge unit areas including “Algorithms and complexity, Computational science, Programming languages, Software development fundamentals, Social issues and professional practice”.
A continuation of CS& 141. Includes implementation of interfaces modularity, data structures, file I/O algorithms and analysis, searching, sorting and recursion using the Java programming language. Emphasis on learning to develop algorithms using the principles of top-down design and step-wise refinement and modularity in object-oriented programming paradigm. Includes an introduction to the functional programming paradigm, and emphasis on professional software development practices and techniques. This course pulls from the Association for Computing and Machinery (ACM) computer science knowledge unit areas including “Algorithms and complexity, Discrete structures, Programming languages, Software development fundamentals, Software engineering, Social issues and professional practice. (E)
An introduction to fundamentals of computer science. Topics covered include algorithmic design; problem-solving techniques for computer programming; fundamentals of digital logic and computer organization; the role of the operating system; introductory programming methodology, including variables, assignment statements, control statements and subroutines (methods); programming paradigms; the compilation process; theoretical limits of computation; database structures; and social and ethical issues. (NS)