By the end of this course, students should be well positioned to learn any mainstream programming language, and have a foundation for learning more advanced concepts for software engineering and computer science. In particular, students will:
- Understand how to break down hard problems into a series of sub-problems.
- Be able to use fundamental programming constructs (such as variables, conditional and iterative control structures) in Python and C++.
- Understand and be able to implement simple input and output (I/O) (e.g. interactive input from the user, or using disk storage).
- Design functions and reason about their role in programs, including an understanding of passing arguments and returning values.
- Learn the properties of data types, including primitive types like numbers and booleans, as well as complex data types like lists and dictionaries.
- Use an Integrated Development Environment (IDE) to write code. Begin to understand the art of debugging as part of software development.
- Design and create code using the fundamentals of object-oriented design methods.
- Develop an understanding of software development as a dynamic, social process, and that learning how to seek out information is a necessary skill for success.
- Leverage two different programming languages to understand programming concepts in general rather than just in the particular.
- Understand type systems (dynamic vs static).
- Know the differences between interpreted and compiled languages.