I have taught four different courses since I've been at Wilfrid Laurier: CP104, CP114, CP312, CP373, CP460. In my previous incarnations I've also taught error correcting coding theory, calculus, discrete mathematics, formal methods, and artificial intelligence.
CP104: Introduction to Programming
Calendar description: An introductory course designed to familiarize the student with modern software development techniques. Emphasis on problem-solving and structured program design methodologies. Programming projects are implemented in a widely used high-level language (This course may be ``challenged for credit.'')
Calendar Description: Introduction to analysis of algorithms, data structures, recursion, searching, sorting, linked lists, queues, stacks, trees.
Calendar Description: Analysis of the best, average, and worst case behaviors of algorithms. Algorithmic strategies: brute force algorithms, greedy algorithms, divide-and-conquer, branch and bound, backtracking. Fundamental computing algorithms: O(n log n) sorting, hash table, binary trees, depth-and breadth-first search of graphs.
CP373: Ethics and Professional Practice in Computer Science
Introduction to ethics, computer reliability and safety, privacy, computer crime, intellectual property, impact of computers on work and society. Assessment includes written assignments and oral presentations.
Calendar Description: Algorithms and issues in applied cryptography. Topics include history of cryptography, block ciphers, stream ciphers, public-key encryption, digital signatures, and key management. Also, discussion of current issues in information security.