Введение в информатику и программирование Лектор: Е. Р. Набиева enabieva эт gmail тчк com Аннотация: The aim of this course is to give a practical introduction to computer science and proramming in Java. Students will write non-trivial programs that reflect the course material and illustrate the use of computing in science and other areas. We will discuss the following topics: programming basics, including developing the culture of writing readable programs; algorithms and data structures; basic theory of computation; practical techniques (dynamic programming, simulations, etc), as well as a brief introduction to some areas of contemporary computer science. This is an introductory course with no prerequisites. Coursework and grading: The students’ primary work in this course will consist in individually completing extensive programming assignments (about one per 1.5 weeks). A few assignments may consist of several short problems instead. There will also be two in-class written midterms (one programming, one theory) and one final test (half programming, half theory). Homework assignments will account for 60% of the final grade, tests – for 40%. Homework grades will be based partially on program organization, readability and commenting, adherence to style guidelines, and efficiency. Final grades will be computed “on the curve.” Late policy Every day that an assignment is late will incur a 20% penalty, up to a maximum of 80%. No assignments will be accepted after the final test. Students will be granted (six) “late days” to be used at their discretion throughout the course with no penalty. Collaboration All coding must be done individually, with the exception of “paired programming” assignments, the rules for which will be described in the assignment file. Any help or discussions that contributed to the assignment solution must be documented. Make-ups Making up a failing grade will require making up any component turning in a sufficient number of homework assignments to get a passing homework grade (if this was not done during the semester), and passing the make-up test (if the student received a failing net grade on the tests). The make-up grade cannot exceed the minimum passing grade. Topics covered I Programming basics: Getting started: Programming environment, compilation and execution, using the command line. Programming basics: variables, operators, conditionals, loops, functions, arrays, input-output, recursion, dynamic memory, abstract data types. Writing readable code: comments, naming convention, self-documenting code. II Algorithms and data structures. Algorithm analysis, searching and sorting, data structures. III Practical topics Object-oriented programming, dynamic programming, simulations, graphs, etc. IV Theory of computation Finite-state automata, Turing machines, complexity classes, NP-completeness and NP-hardness. V Java specifics Inheritance, exceptions, etc. Literature: Primary textbook: R. Sedgewick and K. Wayne, Introduction to Programming in Java: An Interdisciplinary Approach, AddisonWesley, 2007. Optional textbooks: Java: Herbert Schildt, Java: A Beginner’s Guide Bruce Eckel, Thinking in Java (probably too difficult for complete programming novices) Theory: Cormen, Leiserson, Rivest, Stein. Introduction to Algorithms Герберт Шилдт, «Java: руководство для начинающих». Вильямс, 2013 Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн, «Алгоритмы. Построение и анализ». Вильямс, 2011 Б. Эккель, «Философия Java». Питер, 2009