CIT 596 Theory of computing Traditional course CIS

  • Slides: 9
Download presentation
CIT 596 • Theory of computing • Traditional course (CIS 511, CIS 262) and

CIT 596 • Theory of computing • Traditional course (CIS 511, CIS 262) and other similarly named courses in other universities are divided into 3 parts that are covered in this order – Automata and languages – Computability – Complexity • The traditional course can be too theoretical so I’m going to experiment a bit • Basically I want to throw in a little bit of algorithms/programming

Syllabus for CIT 596 • Finite state machines/ finite automata(Chapter 1 of Sipser) –

Syllabus for CIT 596 • Finite state machines/ finite automata(Chapter 1 of Sipser) – DFA, NFA – NFA and DFA equivalence – Regular expressions • Context free grammars and PDAs (Chapter 2 of Sipser) – Ignore the part concerning deterministic PDA • Turing machines (Chapter 3) • What is computable in a reasonable time? (CLRS) – Complexity analysis – P vs NP – NP completeness reductions • What is not computable? (Chapter 5) – OMG computers cannot do everything!

Expectations of the course • • The intent is to make this course a

Expectations of the course • • The intent is to make this course a little easier than 592 Proofs will be somewhat deemphasized. The course is still theoretical For a more theoretical foundation, take 511 – Could prove to be important if you want to move on to do a masters in CIS/Ph. D in CIS • Often, it is hard to see the real relationship with modern software engineering (I will try and provide some motivation) • Compilers, parsers do use these concepts but we need to do more work to get to that level.

Why should I do this course? • Understanding how far CS has come •

Why should I do this course? • Understanding how far CS has come • If you like history and if you like math, Alan Turing is an interesting (and tragic ) story – Podcast about it http: //podbay. fm/show/283605519/e/1347302054? autostart=1 • Regular expressions are useful • How do I prove a solution for something does not exist! • How do I prove something cannot be solved efficiently and then start looking for approximation algorithms • Interesting to see which problems can be solved efficiently and which cannot – Shortest path v longest path – Eulerian tours v Hamiltonian cycles • We will revisit graph theory from an algorithmic perspective • http: //stackoverflow. com/questions/1968153/theory-ofcomputation (join the debate. . . )

Resources • Office hours – Wednesday 10 -11 – Wednesday 3: 30 -4: 30

Resources • Office hours – Wednesday 10 -11 – Wednesday 3: 30 -4: 30 • Any of the white space on my schedule http: //www. seas. upenn. edu/~bhusnur 4/my. Schedu le. png • TAs (office hours TBD) – Honglin – Aixuan Yang

Grading • 2 midterms – a month from today and then 2 months from

Grading • 2 midterms – a month from today and then 2 months from today • Final (will be cumulative) • Homeworks – Mostly written HW and some programming assignments – More programming assignments when we get to the complexity part of the course – Homeworks handed out on Tuesday and due the next Tuesday • The weightage of each is TBD – Happy to take your feedback regarding this

Books for TOC • Introduction to the Theory of Computation – Sipser • A

Books for TOC • Introduction to the Theory of Computation – Sipser • A discrete math textbook of your choice in order to recall induction proofs – Rosen – Stein et al – Scheinerman • Introduction to Automata Theory, Languages and Computation – Hopcroft et al

Books for the complexity theory part • CLRS – Cormen, Rivest, etc – Considered

Books for the complexity theory part • CLRS – Cormen, Rivest, etc – Considered one of the classics for algorithms – Useful to purchase it even though it is used for only a portion of the course – http: //tberg. dk/books/Introduction_to_algorithm s_3 rd_edition. pdf • http: //www. cs. berkeley. edu/~vazirani/algorit hms/chap 8. pdf

Software for the course • JFLAP - http: //www. jflap. org/ • Free software

Software for the course • JFLAP - http: //www. jflap. org/ • Free software that can be used to draw some of the ‘machines’ that we develop in this course • Trust me, this software package is fun • The source code is in Java, so we might even try tinkering with it to give you practice in Java