Instructors: Göktürk Üçoluk (section 01 & 02)
Teaching Assistants: Mustafa Kemal Kaplan, Oguz Mut, Hasan Ulusoy
Credit Hours: (3-2) 4
Category content:
Catalog Description:
Introduction to the fundamentals of computer systems, including computer
organization, operating systems, language processors and user interfaces.
Introduction to algorithms and programming. Reasoning informally about
the correctness and efficiency of programs. A functional programming language
will be used for practical work.
Course Objectives:
To provide a basic understanding of fundamental concepts in computer
science and engineering. To improve the skills to work with abstract notions
for solving computational problems. Teaching a particular programming language
is not a primary objective; the language will serve as a medium for experimentation.
Prerequisites: None!
Textbook: Simply Scheme: Introducing Computer Science, by B. Harvey and M. Wright, MIT Press, 1994. Available at the University Bookstore.
Syllabus:
| Week 1 | Computer organization: central processing unit, memory, storage devices, input and output. |
| Week 2 | Notions of program and data. Machine language, binary encoding of data. |
| Week 3 | Basic components and functions of an operating system. Overall hierarchical structure of an operating system. Introduction to the use of the Unix operating system. User interfaces. Introduction to the use of the X window system. |
| Week 4 | General introduction to high-level programming languages, and their translators and interpreters. Introduction to the Scheme programming language and environment (MIT Scheme) |
| Week 5 | Characters, numbers, numeric operations and arithmetic expressions. |
| Week 6 | Truth values and Boolean operations. Conditional expressions. |
| Week 7 | Functions: definition and application. |
| Week 8 | Composition of functions. Higher-order functions. |
| Week 9 | Repetitive computations with recursive functions. Defining and using recursive functions involving simple data. Recursive functions as algorithms. |
| Week 10 | List as a recursive type. List processing functions such as traversals, simple transformations. |
| Week 11 | Advanced examples with recursion. Higher-order functions on lists. |
| Week 12 | Trees as a recursive data type represented as lists. Tree processing functions such as traversals, simple transformations. |
| Week 13 | Input and output. Files. |
| Week 14 | Case study: building a non-trivial application. |
The following points will be covered in an informal fashion throughout the programming exercises and case studies starting at week 9:
Grading:
| Attendance | %10 |
| 10 laboratory work | %25 |
| 4 assignments | %20 |
| 1 midterm examination | %20 |
| 1 final examination | %25 |
Most assignments will be programming assignments and the others will be exercises to be written up.
Laboratory sessions will start on a date to be announced later.
Starting from week 5 the laboratory sessions will go in parallel with the lectures. You will be asked to solve problems by using the ideas introduced in the lectures of that week. Earlier lab sessions will build your computing/communicating literacy.
%10 percentage of the grade composition is assigned to attendance. You are expected to attend the lectures regularly. Regular attendance will help you learn the material much more quickly.
Newsgroup: The newsgroup