The aim of this course is to give a practical introduction to computer

advertisement
Введение в информатику и программирование
Лектор: Е. Р. Набиева
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
Download