Title: Principles of Computing
Units: 10
Pre-requisites: None
Description:
This course introduces fundamental computing principles for students with little to no
computing background. To demonstrate these principles, the Python programming language will be
used, especially for being characterized with simple, clean, and well-designed basic
programming structures. As a result, this will allow students to primarily focus on
understanding and applying these principles, without getting bogged down in arcane language
details.
To this end, the major principles this course will teach include: (1) an orderly software
development process, which encompasses problem analysis, program specification, design,
implementation, debugging, testing, and maintenance, (2) programming constructs, which involve
conditioning, sequencing, selection, iteration, and recursion, (3) data organization such as
lists, tuples, and dictionaries, (4) reduction of code duplication and increase of program
modularity using functions and objects, (5) design and implementation of moderately complex
programs using object-oriented techniques such as encapsulation, polymorphism and inheritance,
(6) use of computational principles in problem-solving like divide and conquer, randomness, and
simulation, and (7) classification of computational problems based on complexity and
non-computable functions, among others.
To help students hone their programming skills and deepen their understanding of computing
principles, the course will include a weekly homework, which involves two types of problems,
programming and conceptual. In addition, each student will design, implement, and debug a large
programming project by the end of the semester, thus getting the chance to piece together all
the principles and skills covered throughout the semester in one solid crucible.