METU DEPARTMENT OF COMPUTER ENGINEERING

CENG-111

Introduction to Computer Engineering Concepts

Fall 1999-2000

Instructors: Göktürk Üçoluk (section 01 & 02)

Teaching Assistants: Mustafa Kemal Kaplan, Oguz Mut, Hasan Ulusoy

Credit Hours: (3-2) 4

Category content:

2 Computer Literacy and Programming credits + 1 Engineering Sciences credit + 1 Mathematics and Basic Sciences credit.

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:

The order shown in the weekly syllabus is not strict, that is we shall feel free to arrange the order of presentation.

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

metu.ceng.course.111
is devoted to the announcements and discussion of course-related matters. You should check this newsgroup every day. Simply enter the tin command on any Unix machine in our departmental network.