{"ModuleCode":"YSC3219","ModuleTitle":"Theory of Computation","Department":"Yale-NUS College","ModuleDescription":"Is there an algorithm for telling whether your iTunes update freezes or that it will finish if we wait long enough? Is there an algorithm for telling whether the Android app that we are about to download is a malware? Can we be sure that, if intercepted, our emails cannot be read by unintended recipients? We will follow the path taken by Alan Turing, which will lead to some of the most surprising discoveries in computer science. The course will cover various models of computation (finite automata, grammars, Turing machines) and classic topics in computability/complexity theory (eg, undecidability, NP-completeness).","ModuleCredit":"5","Workload":"0-3-0-5-4.5","Prerequisite":"YSC1202 Introduction to Computational Thinking and Programming for All (ICTPA), IS CS Module, or an equivalent course.","Corequisite":"If you haven’t taken math courses in which you have to do proofs, then YSC2209 Proof is strongly recommended.","Types":["Module"],"History":[{"Semester":2,"ExamDate":"2016-04-28T09:00+0800","LecturePeriods":["Monday Morning","Thursday Morning"]}]}