Course Rating (2018) Add this course CSC 104H1 - Computational Thinking Hours: 24L/12T Humans have solved problems for millennia on computing devices by representing data as diverse numbers, text, images, sound and genomes, and then transforming the data. A gentle introduction to designing programs (recipes) for systematically solving problems that crop up in diverse domains such as science, literature, and graphics. Social and intellectual issues raised by computing. Algorithms, hardware, software, operating systems, the limits of computation. Note: you may not take this course concurrently with any Computer Science course, but you may take CSC 108H1/ CSC 148H1 after CSC 104H1. Exclusion: Any Computer Science course

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) Humans have solved problems for millennia on computing devices by representing data as diverse numbers, text, images, sound and genomes, and then transforming the data. A gentle introduction to designing programs (recipes) for systematically solving problems that crop up in diverse domains such as science, literature, and graphics. Social and intellectual issues raised by computing. Algorithms, hardware, software, operating systems, the limits of computation. Note: you may not take this course concurrently with any Computer Science course, but you may take108H1/148H1 after104H1. Class Time – Check current enrolment F L0101 MF11 G Baumgartner L0201 MF12-1 G Baumgartner L0301 MF3 G Baumgartner T0101 W11 T0201 W12-1 T0301 W1 T0401 W2 T0501 W3 S L0101 MF11 G Baumgartner L0201 MF12-1 G Baumgartner T0101 W11 T0201 W12-1 T0301 W1 T0401 W2

Course Rating (2018) Add this course CSC 108H1 - Introduction to Computer Programming Hours: 36L Programming in a language such as Python. Elementary data types, lists, maps. Program structure: control flow, functions, classes, objects, methods. Algorithms and problem solving. Searching, sorting, and complexity. Unit testing. No prior programming experience required. NOTE: You may not take this course concurrently with CSC 120H1/ CSC 148H1, but you may take CSC 148H1 after CSC 108H1. Exclusion: CSC 120H1, CSC 121H1, CSC 148H1

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) Programming in a language such as Python. Elementary data types, lists, maps. Program structure: control flow, functions, classes, objects, methods. Algorithms and problem solving. Searching, sorting, and complexity. Unit testing. No prior programming experience required. NOTE: You may not take this course concurrently with120H1/148H1, but you may take148H1 after108H1. Class Time – Check current enrolment F L0101 M10 J Campbell W10-12 J Campbell L0102 M10 J Campbell W10-12 J Campbell L0201 T12-1 R12-2 L0301 T2 R2-4 L0401 M1 W12-2 L5101 W6-9 L9901 W2-4 J Williams S L0101 T1-3 R1 L0201 T3-5 R3 L0301 M12-2 W12-1 L0401 M2-4 W2 L5101 T6-9 P Gries L5102 T6-9 P Gries

CSC 120H1 - Computer Science for the Sciences Hours: 36L/12P An introduction to computer science for students in other sciences, with an emphasis on gaining practical skills. Introduction to programming with examples and exercises appropriate to the sciences; web programming; software tools. Topics from: database design, considerations in numerical calculation, using UNIX/LINUX systems. At the end of this course you will be able to develop computer tools for scientific applications, such as the structuring and analysis of experimental data. With some additional preparation, you will also be ready to go on to CSC 148H1. Practical (P) sections consist of supervised work in the computer laboratory. No programming experience is necessary. Exclusion: Any CSC course, with the exception of CSC 104H1

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) An introduction to computer science for students in other sciences, with an emphasis on gaining practical skills. Introduction to programming with examples and exercises appropriate to the sciences; web programming; software tools. Topics from: database design, considerations in numerical calculation, using UNIX/LINUX systems. At the end of this course you will be able to develop computer tools for scientific applications, such as the structuring and analysis of experimental data. With some additional preparation, you will also be ready to go on to148H1. Practical (P) sections consist of supervised work in the computer laboratory. No programming experience is necessary. Class Time Not Available (Possibly Cancelled)

CSC 121H1 - Computer Science for Statistics Hours: 36L/12P An introduction to computer science for students planning to use computers for statistical analysis and research. Using a statistical programming environment, fundamental programming concepts, and computational topics relevant to statistics, such as issues with numerical calculation, random number generation, and management of data. Practicals consist of supervised work in the computer laboratory to reinforce concepts and develop programming skills. No previous programming experience is necessary. Please consult with the CS Undergraduate office if you intend to continue on to CSC 148H1. Exclusion: Any CSC course, with the exception of CSC 104H1

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) An introduction to computer science for students planning to use computers for statistical analysis and research. Using a statistical programming environment, fundamental programming concepts, and computational topics relevant to statistics, such as issues with numerical calculation, random number generation, and management of data. Practicals consist of supervised work in the computer laboratory to reinforce concepts and develop programming skills. No previous programming experience is necessary. Please consult with the CS Undergraduate office if you intend to continue on to148H1. Class Time Not Available (Possibly Cancelled)

Course Rating (2018) Add this course CSC 148H1 - Introduction to Computer Science Hours: 36L/24P Abstract data types and data structures for implementing them. Linked data structures. Encapsulation and information-hiding. Object-oriented programming. Specifications. Analyzing the efficiency of programs. Recursion. This course assumes programming experience as provided by CSC 108H1. Students who already have this background may consult the Computer Science Undergraduate Office for advice about skipping CSC 108H1. Practical (P) sections consist of supervised work in the computing laboratory. These sections are offered when facilities are available, and attendance is required. NOTE: Students may go to their college to drop down from CSC 148H1 to CSC 108H1. See above for the drop down deadline. Prerequisite: CSC 108H1/​(equivalent programming experience)

Exclusion: CSC 207H1

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) Abstract data types and data structures for implementing them. Linked data structures. Encapsulation and information-hiding. Object-oriented programming. Specifications. Analyzing the efficiency of programs. Recursion. This course assumes programming experience as provided by108H1. Students who already have this background may consult the Computer Science Undergraduate Office for advice about skipping108H1. Practical (P) sections consist of supervised work in the computing laboratory. These sections are offered when facilities are available, and attendance is required. NOTE: Students may go to their college to drop down from148H1 to108H1. See above for the drop down deadline. Class Time – Check current enrolment F L0101 M11-1 J Smith W12-1 J Smith L0102 M11-1 J Smith W12-1 J Smith T0101 R9-11 T0201 R11-1 T0301 R1-3 T5101 R7-9 S L0101 W12-2 D Horton F1 D Horton L0102 W12-2 D Horton F1 D Horton L0201 W2-4 F2 L0301 T1-3 R1 L5101 T6-9 T0101 R9-11 T0201 R11-1 T0301 R1-3 T0401 R3-5 T0501 F10-12 T5101 R5-7 T5201 R7-9

Course Rating (2018) Add this course CSC 165H1 - Mathematical Expression and Reasoning for Computer Science Hours: 36L/12T Introduction to abstraction and rigour. Informal introduction to logical notation and reasoning. Understanding, using and developing precise expressions of mathematical ideas, including definitions and theorems. Structuring proofs to improve presentation and comprehension. General problem-solving techniques. Running time analysis of iterative programs. Formal definition of Big-Oh. Diagonalization, the Halting Problem, and some reductions. Unified approaches to programming and theoretical problems. Corequisite: CSC 108H1/​ CSC 120H1/​(equivalent programming experience)

Exclusion: CSC 236H1, CSC 240H1

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) Introduction to abstraction and rigour. Informal introduction to logical notation and reasoning. Understanding, using and developing precise expressions of mathematical ideas, including definitions and theorems. Structuring proofs to improve presentation and comprehension. General problem-solving techniques. Running time analysis of iterative programs. Formal definition of Big-Oh. Diagonalization, the Halting Problem, and some reductions. Unified approaches to programming and theoretical problems. Class Time – Check current enrolment F L0101 TR1-3 D Heap L0201 TR3-5 D Heap S L0101 MR11-1 D Liu L0201 MR1-3 L0301 M4-6 D Liu R3-5 D Liu L5101 MW6-8

Course Rating (2018) Add this course CSC 197H1 - What, Who, How: Privacy in the Age of Big Data Collection Hours: 24S The rapid advance of technology has brought remarkable changes to how we conduct our daily lives, from how we communicate, consume news and data, and purchase goods. As we increase our online activity, so too do we increase the amount of personal data that we're sharing, often without realizing it. The questions of exactly what data is being collected, who is collecting and accessing this data, and how this data is being used, have significant implications for both individuals and our larger social and political institutions. Organized by a wide variety of case studies drawn from current events, we'll study how personal data can be collected and tracked, how personal and social factors may influence our own decisions about whether and how much to share our data, and what broader political and legal tools are used to either protect or subvert individual privacy. Restricted to first-year students. Not eligible for CR/NCR option. Distribution Requirements: Social Science

Breadth Requirements: Society and its Institutions (3) The rapid advance of technology has brought remarkable changes to how we conduct our daily lives, from how we communicate, consume news and data, and purchase goods. As we increase our online activity, so too do we increase the amount of personal data that we're sharing, often without realizing it. The questions of exactly what data is being collected, who is collecting and accessing this data, and how this data is being used, have significant implications for both individuals and our larger social and political institutions. Organized by a wide variety of case studies drawn from current events, we'll study how personal data can be collected and tracked, how personal and social factors may influence our own decisions about whether and how much to share our data, and what broader political and legal tools are used to either protect or subvert individual privacy. Restricted to first-year students. Not eligible for CR/NCR option. Class Time – Check current enrolment F L0101 T2-4 D Liu

Course Rating (2018) Add this course CSC 198H1 - Computing for Science Hours: 48L Computational skills for the modern practice of basic and applied science. Applied computer programming with an emphasis on practical examples related to the simulation of matter, drawing from scientific disciplines including chemistry, biology, materials science, and physics. Studio format with a mixture of lecture, guided programming, and open scientific problem solving. Students will be exposed to Python numerical and data analysis libraries. Restricted to first-year students. Not eligible for CR/NCR option. Exclusion: Any CSC course, except CSC 104H1

Recommended Preparation: We recommend students also be enrolled in CHM151H1, PHY151H1, or another science course

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) Computational skills for the modern practice of basic and applied science. Applied computer programming with an emphasis on practical examples related to the simulation of matter, drawing from scientific disciplines including chemistry, biology, materials science, and physics. Studio format with a mixture of lecture, guided programming, and open scientific problem solving. Students will be exposed to Python numerical and data analysis libraries. Restricted to first-year students. Not eligible for CR/NCR option. Class Time – Check current enrolment F L0101 F9-1 A Aspuru-Guzik, J Smith S L0101 F9-1 J Smith

Course Rating (2018) Add this course CSC 199H1 - Intelligence, Artificial and Human Hours: 24S What is human intelligence? How close are we to replicating it? How productive/reductive is the brain-computer analogy? What ethical challenges are posed by AI on workers, society, and the environment? Can we put a hold on "progress"? Is Silicon Valley the seat of a new techno-religion? What can they teach us about today's research priorities? What insight (or inspiration) can we get from works of science fiction about the future of human-AI interaction? Through reading discussion, written assignment, and workshops, this seminar will present students with the opportunity to integrate their computer science interests with philosophy, history, and literature. There is an equivalent course offered by St. Michael’s College. Students may take one or the other but not both. Restricted to first-year students. Not eligible for CR/NCR option. Exclusion: SMC199H1 (Intelligence, Artificial and Human)

Distribution Requirements: Science

Breadth Requirements: Society and its Institutions (3) What is human intelligence? How close are we to replicating it? How productive/reductive is the brain-computer analogy? What ethical challenges are posed by AI on workers, society, and the environment? Can we put a hold on "progress"? Is Silicon Valley the seat of a new techno-religion? What can they teach us about today's research priorities? What insight (or inspiration) can we get from works of science fiction about the future of human-AI interaction? Through reading discussion, written assignment, and workshops, this seminar will present students with the opportunity to integrate their computer science interests with philosophy, history, and literature. There is an equivalent course offered by St. Michael’s College. Students may take one or the other but not both. Restricted to first-year students. Not eligible for CR/NCR option. Class Time – Check current enrolment S L0101 T2-4 G Penn S L0101 T2-4 G Penn

CSC 204H1 - Collaborating with Computer Scientists Hours: 48L/24P This course teaches the language, culture, and communication mechanisms necessary for effective collaboration on large-scale software projects involving both computer scientists and non-computer scientists. This course is intended for students with little or no computer science background. Distribution Requirements: Humanities

Breadth Requirements: The Physical and Mathematical Universes (5) This course teaches the language, culture, and communication mechanisms necessary for effective collaboration on large-scale software projects involving both computer scientists and non-computer scientists. This course is intended for students with little or no computer science background. Class Time Not Available (Possibly Cancelled)

Course Rating (2018) Add this course CSC 207H1 - Software Design Hours: 24L/12T An introduction to software design and development concepts, methods, and tools using a statically-typed object-oriented programming language such as Java. Topics from: version control, unit testing, refactoring, object-oriented design and development, design patterns, advanced IDE usage, regular expressions, and reflection. Representation of floating-point numbers and introduction to numerical computation. Prerequisite: 60% or higher in CSC 148H1 (Please note: The minimum prerequisite grade in CSC 148H1 is lower than the minimum grade for program admission in Computer Science. If you take this course when your grade in CSC 148H1 is lower than the requirement for program admission, you will be unable to enrol in a Computer Science program. If you hope to enrol in a Computer Science program in future, please ensure that you satisfy the program admission grade requirements in CSC 148H1 before completing CSC 207H1.)

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) An introduction to software design and development concepts, methods, and tools using a statically-typed object-oriented programming language such as Java. Topics from: version control, unit testing, refactoring, object-oriented design and development, design patterns, advanced IDE usage, regular expressions, and reflection. Representation of floating-point numbers and introduction to numerical computation. Class Time – Check current enrolment F L0101 M2 P Gries T1-3 P Gries L0201 M4 P Gries T3-5 P Gries L0301 M3 W2-4 L0401 R10-12 P Gries R12-1 P Gries L2000 M2 P Gries T1-3 P Gries L5101 W5 W6-8 S L0101 T2 W2-4 L0201 T1 R1-3 L2000 T2 W2-4

Course Rating (2018) Add this course CSC 209H1 - Software Tools and Systems Programming Hours: 24L/12T Software techniques in a Unix-style environment, using scripting languages and a machine-oriented programming language (typically C). What goes on in the operating system when programs are executed. Core topics: creating and using software tools, pipes and filters, file processing, shell programming, processes, system calls, signals, basic network programming. Prerequisite: CSC 207H1

Exclusion: CSC 372H1, CSC 369H1, CSC 469H1

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) Software techniques in a Unix-style environment, using scripting languages and a machine-oriented programming language (typically C). What goes on in the operating system when programs are executed. Core topics: creating and using software tools, pipes and filters, file processing, shell programming, processes, system calls, signals, basic network programming. Class Time – Check current enrolment F L0101 TR1 K Reid L0201 TR2 K Reid T0101 F10 T0201 F11 T0301 F12-1 S L0101 TR1 J Campbell L0201 TR1 J Campbell L0301 TR1 J Campbell L5101 T6-8 T0101 F1 T0201 F2 T0301 F3 T5101 T8

Course Rating (2018) Add this course CSC 236H1 - Introduction to the Theory of Computation Hours: 24L/12T The application of logic and proof techniques to Computer Science. Mathematical induction; correctness proofs for iterative and recursive algorithms; recurrence equations and their solutions; introduction to automata and formal languages. This course assumes university-level experience with proof techniques and algorithmic complexity as provided by CSC 165H1. Very strong students who already have this experience (e.g. successful completion of MAT157Y1) may consult the undergraduate office about proceeding directly into CSC 236H1 or CSC 240H1. Prerequisite: 60% or higher in CSC 148H1, 60% or higher in CSC 165H1 (Please note: The minimum prerequisite grade in CSC 148H1 and CSC 165H1/​ CSC 240H1 is lower than the minimum grade for program admission in Computer Science. If you take this course when your grade in CSC 165H1/​ CSC 240H1 is lower than the requirement for program admission, you will be unable to enrol in a Computer Science program. If you hope to enrol in a Computer Science program in future, please ensure that you satisfy the program admission grade requirements in CSC 165H1/​ CSC 240H1 before completing CSC 236H1. Students will not be permitted to retake CSC 165H1 after completing CSC 236H1.)

Exclusion: CSC 240H1

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) The application of logic and proof techniques to Computer Science. Mathematical induction; correctness proofs for iterative and recursive algorithms; recurrence equations and their solutions; introduction to automata and formal languages. This course assumes university-level experience with proof techniques and algorithmic complexity as provided by165H1. Very strong students who already have this experience (e.g. successful completion of MAT157Y1) may consult the undergraduate office about proceeding directly into236H1 or240H1. Class Time – Check current enrolment F L0101 MWF11 L0201 MWF12-1 D Heap L2000 MWF11 L5101 R6-9 S L0101 MWF11 J Smith L0201 MWF12-1 J Smith L2000 MWF11 J Smith

Course Rating (2018) Add this course CSC 240H1 - Enriched Introduction to the Theory of Computation Hours: 24L/12T The rigorous application of logic and proof techniques to Computer Science. Propositional and predicate logic; mathematical induction and other basic proof techniques; correctness proofs for iterative and recursive algorithms; recurrence equations and their solutions (including the Master Theorem); introduction to automata and formal languages. This course covers the same topics as CSC 236H1, together with selected material from CSC 165H1, but at a faster pace, in greater depth and with more rigour, and with more challenging assignments. Greater emphasis will be placed on proofs and theoretical analysis. Certain topics briefly mentioned in CSC 165H1 or CSC 236H1 may be covered in more detail in this course, and some additional topics may also be covered. NOTES: If you completed CSC 165H1 with a course grade less than 85, you should take CSC 236H1 instead of CSC 240H1. Students may go to their college to drop down from CSC 240H1 to CSC 165H1 (or to CSC 236H1 if they have already passed CSC 165H1). See note in Calendar Section for the drop down deadlines. Corequisite: CSC 148H1; MAT137Y1/​ MAT157Y1

Exclusion: CSC 236H1, CSC 263H1/​ CSC 265H1

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) The rigorous application of logic and proof techniques to Computer Science. Propositional and predicate logic; mathematical induction and other basic proof techniques; correctness proofs for iterative and recursive algorithms; recurrence equations and their solutions (including the Master Theorem); introduction to automata and formal languages. This course covers the same topics as236H1, together with selected material from165H1, but at a faster pace, in greater depth and with more rigour, and with more challenging assignments. Greater emphasis will be placed on proofs and theoretical analysis. Certain topics briefly mentioned in165H1 or236H1 may be covered in more detail in this course, and some additional topics may also be covered. NOTES: If you completed165H1 with a course grade less than 85, you should take236H1 instead of240H1. Students may go to their college to drop down from240H1 to165H1 (or to236H1 if they have already passed165H1). See note in Calendar Section for the drop down deadlines. Class Time – Check current enrolment S L0101 M11-1 W11

Course Rating (2018) Add this course CSC 258H1 - Computer Organization Hours: 24L/12T/13P Computer structures, machine languages, instruction execution, addressing techniques, and digital representation of data. Computer system organization, memory storage devices, and microprogramming. Block diagram circuit realizations of memory, control and arithmetic functions. There are a number of laboratory periods in which students conduct experiments with digital logic circuits. Prerequisite: 60% or higher in CSC 148H1, 60% or higher in CSC 165H1/​ CSC 240H1 (Please note: The minimum prerequisite grades in CSC 148H1 and CSC 165H1/​ CSC 240H1 are lower than the minimum grades for program admission in Computer Science. If you take this course when your grade in CSC 148H1 or CSC 165H1/​ CSC 240H1 is lower than the requirement for program admission, you will be unable to enrol in a Computer Science program. If you hope to enrol in a Computer Science program in future, please ensure that you satisfy the program admission grade requirements in CSC 148H1 and CSC 165H1/​​ CSC 240H1 before completing CSC 258H1.)

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) Computer structures, machine languages, instruction execution, addressing techniques, and digital representation of data. Computer system organization, memory storage devices, and microprogramming. Block diagram circuit realizations of memory, control and arithmetic functions. There are a number of laboratory periods in which students conduct experiments with digital logic circuits. Class Time – Check current enrolment F L0101 MWF11 W6-9 L5101 TR6-9 S L0101 MWF1 W6-9 L0201 MWF2 M6-9 L5101 MT6-9

Course Rating (2018) Add this course CSC 263H1 - Data Structures and Analysis Hours: 24L/12T Algorithm analysis: worst-case, average-case, and amortized complexity. Expected worst-case complexity, randomized quicksort and selection. Standard abstract data types, such as graphs, dictionaries, priority queues, and disjoint sets. A variety of data structures for implementing these abstract data types, such as balanced search trees, hashing, heaps, and disjoint forests. Design and comparison of data structures. Introduction to lower bounds. Prerequisite: CSC 207H1, CSC 236H1/​ CSC 240H1; STA247H1/​ STA255H1/​ STA257H1

Exclusion: CSC 265H1

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) Algorithm analysis: worst-case, average-case, and amortized complexity. Expected worst-case complexity, randomized quicksort and selection. Standard abstract data types, such as graphs, dictionaries, priority queues, and disjoint sets. A variety of data structures for implementing these abstract data types, such as balanced search trees, hashing, heaps, and disjoint forests. Design and comparison of data structures. Introduction to lower bounds. Class Time – Check current enrolment F L0101 W12-1 W1 F10 L0201 W3 W4 F1 L2000 W3 W4 F1 S L0101 MWF2 S Toueg L0201 MWF3 S Toueg L0301 MWF4 D Heap L2000 MWF2 S Toueg L5101 R6-8 D Heap R8 D Heap

Course Rating (2018) Add this course CSC 265H1 - Enriched Data Structures and Analysis Hours: 24L/12T This course covers the same topics as CSC 263H1, but at a faster pace, in greater depth and with more rigour, and with more challenging assignments. Greater emphasis will be placed on proofs, theoretical analysis, and creative problem-solving. Certain topics briefly mentioned in CSC 263H1 may be covered in more detail in this course, and some additional topics may also be covered. Students without the exact course prerequisites but with a strong mathematical background are encouraged to consult the Department about the possibility of taking this course. NOTE: Students may go to their college to drop down from CSC 265H1 to CSC 263H1. See above for the drop down deadline. Prerequisite: CSC 240H1 or an A- in CSC 236H1

Corequisite: STA247H1/​ STA255H1/​ STA257H1

Exclusion: CSC 263H1

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) This course covers the same topics as263H1, but at a faster pace, in greater depth and with more rigour, and with more challenging assignments. Greater emphasis will be placed on proofs, theoretical analysis, and creative problem-solving. Certain topics briefly mentioned in263H1 may be covered in more detail in this course, and some additional topics may also be covered. Students without the exact course prerequisites but with a strong mathematical background are encouraged to consult the Department about the possibility of taking this course. NOTE: Students may go to their college to drop down from265H1 to263H1. See above for the drop down deadline. Class Time – Check current enrolment F L0101 T2-4 A Nikolov R3 A Nikolov

Course Rating (2018) Add this course CSC 300H1 - Computers and Society Hours: 24L/12T Privacy and Freedom of Information; recent Canadian legislation and reports. Computers and work; employment levels, quality of working life. Electronic fund transfer systems; transborder data flows. Computers and bureaucratization. Computers in the home; public awareness about computers. Robotics. Professionalism and the ethics of computers. The course is designed not only for science students, but also those in social sciences or humanities. Prerequisite: Any half-course on computing

Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at the UTSG, UTM, or UTSC are limited to a maximum of three 300-/400-level CSC /ECE half-courses.

Distribution Requirements: Science

Breadth Requirements: Society and its Institutions (3) Privacy and Freedom of Information; recent Canadian legislation and reports. Computers and work; employment levels, quality of working life. Electronic fund transfer systems; transborder data flows. Computers and bureaucratization. Computers in the home; public awareness about computers. Robotics. Professionalism and the ethics of computers. The course is designed not only for science students, but also those in social sciences or humanities. Class Time – Check current enrolment F L0101 W3-5 S Ahmed L5101 W6-8 S Ahmed T5101 W5 T5102 W5 T5103 W5 T5201 W8 T5202 W8 T5203 W8 S L0101 W2-4 M Zaleski F2 M Zaleski L5101 R6-8 R8

Course Rating (2018) Add this course CSC 301H1 - Introduction to Software Engineering Hours: 24L/12T An introduction to agile development methods appropriate for medium-sized teams and rapidly-moving projects. Basic software development infrastructure; requirements elicitation and tracking; estimation and prioritization; teamwork skills; basic UML; design patterns and refactoring; security, discussion of ethical issues, and professional responsibility. Prerequisite: CSC 209H1, CSC 263H1/​ CSC 265H1

Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at the UTSG, UTM, or UTSC are limited to a maximum of three 300-/400-level CSC /ECE half-courses.

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) An introduction to agile development methods appropriate for medium-sized teams and rapidly-moving projects. Basic software development infrastructure; requirements elicitation and tracking; estimation and prioritization; teamwork skills; basic UML; design patterns and refactoring; security, discussion of ethical issues, and professional responsibility. Class Time – Check current enrolment F L0101 M12-2 T12-1 L5101 M6-8 M8 S L0101 W12-2 M Zaleski R1 M Zaleski L5101 M6-8 M8

Course Rating (2018) Add this course CSC 302H1 - Engineering Large Software Systems Hours: 24L/12T An introduction to the theory and practice of large-scale software system design, development, and deployment. Project management; advanced UML; reverse engineering; requirements inspection; verification and validation; software architecture; performance modelling and analysis. Prerequisite: CSC 301H1

Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at the UTSG, UTM, or UTSC are limited to a maximum of three 300-/400-level CSC /ECE half-courses.

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) An introduction to the theory and practice of large-scale software system design, development, and deployment. Project management; advanced UML; reverse engineering; requirements inspection; verification and validation; software architecture; performance modelling and analysis. Class Time – Check current enrolment F L0101 MF4 M Zaleski W4-6 M Zaleski S L0101 MF4 M Zaleski W4-6 M Zaleski

Course Rating (2018) Add this course CSC 303H1 - Social and Information Networks Hours: 24L/12T A course on how networks underlie the social, technological, and natural worlds, with an emphasis on developing intuitions for broadly applicable concepts in network analysis. Topics include: introductions to graph theory, network concepts, and game theory; social networks; information networks; the aggregate behaviour of markets and crowds; network dynamics; information diffusion; popular concepts such as "six degrees of separation," the "friendship paradox," and the "wisdom of crowds." Prerequisite: CSC 263H1/​ CSC 265H1, STA247H1/​ STA255H1/​ STA257H1/​ ECO227Y1, MAT221H1/​ MAT223H1/​ MAT240H1

Exclusion: CSC C46H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at the UTSG, UTM, or UTSC are limited to a maximum of three 300-/400-level CSC /ECE half-courses.

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) A course on how networks underlie the social, technological, and natural worlds, with an emphasis on developing intuitions for broadly applicable concepts in network analysis. Topics include: introductions to graph theory, network concepts, and game theory; social networks; information networks; the aggregate behaviour of markets and crowds; network dynamics; information diffusion; popular concepts such as "six degrees of separation," the "friendship paradox," and the "wisdom of crowds." Class Time – Check current enrolment S L0101 MWF3 A Borodin

Course Rating (2018) Add this course CSC 304H1 - Algorithmic Game Theory and Mechanism Design Hours: 24L/12P A mathematical and computational introduction to game theory and mechanism design. Analysis of equilibria in games and computation of price of anarchy. Design and analysis mechanisms with monetary transfers (such as auctions). Design and analysis of mechanisms without monetary transfers (such as voting and matching). This course is intended for economics, mathematics, and computer science students. Prerequisite: STA247H1/​ STA255H1/​ STA257H1/​ PSY201H1/​ ECO227Y1, ( MAT135H1, MAT136H1)/ MAT137Y1/​ MAT157Y1

Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at the UTSG, UTM, or UTSC are limited to a maximum of three 300-/400-level CSC /ECE half-courses.

Recommended Preparation: MAT223H1, CSC 373H1

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) A mathematical and computational introduction to game theory and mechanism design. Analysis of equilibria in games and computation of price of anarchy. Design and analysis mechanisms with monetary transfers (such as auctions). Design and analysis of mechanisms without monetary transfers (such as voting and matching). This course is intended for economics, mathematics, and computer science students. Class Time – Check current enrolment F L0101 MWF3 N Shah

Course Rating (2018) Add this course CSC 309H1 - Programming on the Web Hours: 24L/12T An introduction to software development on the web. Concepts underlying the development of programs that operate on the web; survey of technological alternatives; greater depth on some technologies. Operational concepts of the internet and the web, static client content, dynamic client content, dynamically served content, n-tiered architectures, web development processes, and security on the web. Assignments involve increasingly more complex web-based programs. Guest lecturers from leading e-commerce firms will describe the architecture and operation of their web sites. Prerequisite: CSC 209H1

Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at the UTSG, UTM, or UTSC are limited to a maximum of three 300-/400-level CSC /ECE half-courses.

Recommended Preparation: CSC 343H1

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) An introduction to software development on the web. Concepts underlying the development of programs that operate on the web; survey of technological alternatives; greater depth on some technologies. Operational concepts of the internet and the web, static client content, dynamic client content, dynamically served content, n-tiered architectures, web development processes, and security on the web. Assignments involve increasingly more complex web-based programs. Guest lecturers from leading e-commerce firms will describe the architecture and operation of their web sites. Class Time – Check current enrolment F L0101 MWF3 L0201 MWF4 S L0101 MWF10 L5101 M6-8 M8

Course Rating (2018) Add this course CSC 311H1 - Introduction to Machine Learning Previous Course Number: CSC 411H1

Hours: 24L/12T An introduction to methods for automated learning of relationships on the basis of empirical data. Classification and regression using nearest neighbour methods, decision trees, linear models, and neural networks. Clustering algorithms. Problems of overfitting and of assessing accuracy. Basics of reinforcement learning. Prerequisite: CSC 207H1, MAT235Y1/​ MAT237Y1/​ MAT257Y1/​(minimum of 77% in MAT135H1 and MAT136H1)/(minimum of 73% in MAT137Y1)/(minimum of 67% in MAT157Y1), MAT221H1/​ MAT223H1/​ MAT240H1, STA247H1/​ STA255H1/​ STA257H1

Exclusion: CSC 411H1, STA314H1, ECE421H1. NOTE: Students not enrolled in the Computer Science Major or Specialist program at the UTSG, UTM, or UTSC are limited to a maximum of three 300-/400-level CSC /ECE half-courses.

Recommended Preparation: MAT235Y1/​ MAT237Y1/​ MAT257Y1

Distribution Requirements: Science

Breadth Requirements: The Physical and Mathematical Universes (5) An introduction to methods for automated learning of relationships on the basis of empirical data. Classification and regression using nearest neighbour methods, decision trees, linear models, and neural networks. Clustering algorithms. Problems of overfitting and of assessing accuracy. Basics of reinforcement learning. Class Time – Check current enrolment F L0101 M11-1 M Erdogdu M3 M Erdogdu L0201 W11-1 R Zemel W3 R Zemel L0301 R4-6 M Erdogdu R6 M Erdogdu S L0101 T1-3 R2 L5101 R6-8 R8