Apply mathematical logic to applications in computer science, leading to program interpretation and understanding; including pre-/post-conditions, invariants, Hoare logic, relational algebra, and verification. Develop skills and knowledge for designing, debugging, documenting, verifying and testing code, and understand programs including open-source code. Topics are introduced using standard examples including stacks and queues; extended examples are drawn from string-matching algorithms and finite state automata. An introduction to reasoning about concurrency, pitfalls, and language/library-level solutions. Weekly hours: 3 Lecture hours and 1.5 Tutorial hoursPrerequisite(s): One of MATH 163.3 or CMPT 260.3; and 60% or higher in CMPT 145.3 or CMPT146.3. Note: Students with credit for CMPT 260 can take CMPT 263 for credit, but students cannot take CMPT 260 for credit after completing CMPT 263. Costs in addition to tuition apply to this course.
Apply mathematical logic to applications in computer science, leading to program interpretation and understanding; including pre-/post-conditions, invariants, Hoare logic, relational algebra, and verification. Develop skills and knowledge for designing, debugging, documenting, verifying and testing code, and understand programs including open-source code. Topics are introduced using standard examples including stacks and queues; extended examples are drawn from string-matching algorithms and finite state automata. An introduction to reasoning about concurrency, pitfalls, and language/library-level solutions. Weekly hours: 3 Lecture hours and 1.5 Tutorial hoursPrerequisite(s): One of MATH 163.3 or CMPT 260.3; and 60% or higher in CMPT 145.3 or CMPT146.3. Note: Students with credit for CMPT 260 can take CMPT 263 for credit, but students cannot take CMPT 260 for credit after completing CMPT 263. Costs in addition to tuition apply to this course.