7.
Examination Old CourseYou can still sit for exams of IN1605-B• Provided you have finished the lab (practicum)Sittings• Together with exam for this course (TI1220)• April 11, 2010• June 22, 2010 TI1220 - Introduction 7

8.
Feedback AppreciatedAn invitation to Murphy• New content• New software• New lectures, assignments, exams• New lecturer• New assistants (mostly)Please let us know how it goes• report problems early• also let us know what goes right :) TI1220 - Introduction 8

13.
Turing MachinescomputabilityTuring/Church Thesis• Every effective computation can be carried out by a Turing machine*Corollary• All (Turing Complete) programming languages can express all effective computations• Why bother with new programming languages?(*) see IN2505 TI1220 - Introduction 13

22.
Goals of this Courseconcepts of programming languages• Understand programming languages and programs in terms of concepts that transcend individual languages• Consider advantages and disadvantages in the use of particular languages and concepts• Analyze programs in terms of concepts• Application of concepts in designing programs TI1220 - Introduction 22

23.
Approachconcepts of programming languagesStudy three concrete languages• Scala + C + JavaScript• Learn to program in these languages• Learn concepts by using them in programming• Programming assignments about languagesGeneralize• What are the underlying ideas?• Learn to learn new languages TI1220 - Introduction 23

42.
Programming in ScalaBookProgramming in ScalaA comprehensive step-by-step guideby Martin Odersky, Lex Spoon, and Bill Vennershttp://www.artima.com/shop/programming_in_scalaAvailable as e-book (PDF)Lectures are based on book; not everything in book is on slides; readingbook is required; see Literature slides at end of each lecture for requiredreading! TI1220 - Introduction 42

74.
Summarylessons learnedProgramming languages are for people• to reason about solutions for problemsDeclaration and use• binding values to names, referring to values using namesImmutable values• cannot be changed once created (no side effects)Objects• data structures with methods B:2.3 TI1220 - Introduction 74

75.
Exam QuestionWhat happens when we execute the following code:val greetStrings = new Array[String](3)greetStrings(0) = "Hello"greetStrings(1) = ", "greetStrings(2) = "world!n"(a) Error: greetStrings is an immutable variable that cannot be assigned to(b) Error: Array is a immutable data structure that cannot be assigned to(c) No error: greetStrings is a mutable variable that can be assigned to(d) No error: Array is a mutable data structure that can be assigned to B:2.3 TI1220 - Introduction 75