CSC1001: Fundamentals of Computing/Software Development
This is an introductory computing course that focuses on a fundamental, problem-solving approach to software
development. This course equips you with the mindset and core strategies to solve problems by developing appropriate
software and documentation. Throughout the semester, you'll learn a variety of solution strategies, work with various
data types, and develop an understanding of how to trace, debug, update, and evaluate the execution of Python programs.
You will learn how to apply these concepts to a variety of problems in many domains, collaborate with peers, and build
confidence along the way. The course culminates in a final project where you will apply the solution strategies
you've learned to build and present your engineered software solution to a non-trivial problem.
Outcomes
On successful completion of this course, the student will be able to:
- Draft software implementation requirements from non-technical descriptions.
- Decompose problems into a sequence of logical steps, identifying patterns such as iteration, conditional logic, and state management.
- Select and use appropriate data types to effectively model and manipulate real-world information.
- Evaluate complex expressions using arithmetic, relational, and Boolean operators to control program flow.
- Collaboratively design and articulate algorithmic solutions using high-level planning tools, including pseudocode, flowcharts, and state diagrams.
- Trace the execution of algorithms, manually tracking variables and control flow to predict output and identify mismatches between desired and predicted output.
- Evaluate modular software solutions in Python using fundamental programming constructs, including variables, control structures (conditionals and loops), and functions.
- Apply systematic testing and debugging strategies to identify and resolve errors in code.
- Design functions and procedures that use parameters and return values to modularize code, improve reusability, and manage complexity.
- Process data from files and create interactive and scriptable tools.
- Synthesize course concepts to design, implement, and test a complete software solution as part of a collaborative team, breaking the project into manageable tasks.
Homework
homework info
Quizzes
quizz info
Labs
lab info
Exams
exam info