Skip to main content

Ceng111

This is the official site of course Ceng 111. Ceng 111 is an introductory course to Computer Engineering and Science concepts exclusive to the undergraduates of the Department of Computer Engineering, METU.

This site is one of the means of communication between the instructors and students. The others are lectures and through the course under odtuclass.metu.edu.tr. The news forum on ODTUClass should be checked on a daily basis for the announcements.

This site also contains various Python resources as it is used as a tool to introduce fundamental computer science concepts.

Grades are announced through ODTUClass system.

Table of Contents

Course Info

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. Credits: 3+2

Objective

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.

Lecture Hours

  • Section 1: Tuesday 11:40 - 13:30 (BMB-1) + Thursday 11:40 - 12:30 (BMB-1) - Hüseyin Aydın
  • Section 2: Tuesday 09:40 - 11:30 (BMB-1) + Thursday 10:40 - 11:30 (BMB-1) - Sinan Kalkan

You are free to attend any section. All sections will exactly receive the same lecturing and treatment. Attendance is usually not recorded. Though, we reserve the right to perform an attendance check at any time.

Lecturers

- Hüseyin Aydın, B211, huseyin[at]ceng.metu.edu.tr

- Sinan Kalkan, A209, skalkan[at]ceng.metu.edu.tr

Teaching Assistants (in alphabetical order, not in a course related order)

- Orhun Buğra Baran, A206, bugra[at]ceng.metu.edu.tr

- Defne Erkan, B202, derkan[at]ceng.metu.edu.tr

- Ece Gökçay, A302, gokcay[at]ceng.metu.edu.tr

- Ersel Hengirmen, A410, ehengirmen[at]ceng.metu.edu.tr

- Defne Odabaşı, A401, defne[at]ceng.metu.edu.tr (Coordinator)

- Umut Özdemir, A401, umut[at]ceng.metu.edu.tr

- Yiğit Sever, B109, yigit[at]ceng.metu.edu.tr

- Selay Tekgül, A402, selay[at]ceng.metu.edu.tr

- Bora Yalçıner, A210, yalciner[at]ceng.metu.edu.tr

Textbook & References

  • Introduction to Computer Hardware and Systems: Lecture Notes, by G. Üçoluk and S. Kalkan, 2024. (Available in ODTUClass course page.)
  • Introduction to Programming Concepts with Case Studies in Python, by G. Üçoluk and S. Kalkan, 2012. Webpage -Springer's page (This book is downloadable for the students of the course due to METU's purchased site license. See Librarylink of the course home page.)

     

Course Conduct

Dear students,

Ceng 111 is an introductory course for Computer Science concepts.

Practically the course constitutes of two parts:

  • A first part in which an overview of the current hardware (the Van Neuman Architecture) and its functionality is given. Following this, how basic data types are stored and handled is explained.
  • A second part where basic algorithmic and computational concepts are introduced following a functional paradigm. The Python language is used as the workbench.


The course conduct has a four legged support.

  1. Lectures
  2. Text book(s)
  3. Labs
  4. Take-Home Exams
  5. Lab Exams

The followings are to be mentioned:

  • The lectures are not a voicing of the text material. They will cover aspect which are not covered in the course books or will put an emphesis on some of the aspects.
  • In the first part of the lecture the student is expected to gain a broad coverage of the introduced subjects mainly by him/herself. Internet search engines, encyclopedias are excellent sources for such broad-but-shallow information. As a part of the university education strategy students are expected to learn how to acquire and obtain knowledge directly by her/himself. Therefore if you are a student of the course, do trace the terminalogy which is unfamiliar to you. Make notes of it, and later during your selfstudy time eagerly consult the internet to get a grasp of the unfamiliar items.
  • The Laboratory study serves two purposes:
    1. To practical subjects which is not covered in the lectures (like Linux set up, primary UNIX usage, conducting intelligent searches on the internet, etc.)
    2. To experiment with Python and perform some small algorithmic applications in a closed-lab environment.
  • There are 3-4 Lab Exams in total, from which you will gain an important fraction of your overall grade. The first Lab Exam contains practical Linux tasks, the remaining four are Python programming tasks and will be graded automatically (by means of a testing program). Though the input/output testing of the Lab Exams is a “blackbox test”, your source code will be investigated for adherence to any constraints in the task specification.
  • Take-Home Exams will be assigned before each of the Python programming Lab Exams. These exams are for students to work on before the exams in order to practice their programming skills, they are not graded.
  • Usually you will have a 1-2 weeks of time to turn your take-home exams in. This time should be used properly. The level of the take-home exams are so that a “hard work on the last 2-3 days” will not suffice. You are strongly advised to start concentrating on it right after you received it.
  • The forums in the ODTUClass system is devoted to the announcements and discussion of course-related matters.

You SHOULD check the news forum on ODTUClass every day.

Course Weekly Coverage

  • Introduction [0.5 Week]
    1. Course content, objectives, outline
    2. Homeworks, the labs, the exams
    3. Newsgroup, Website
  • Computing and Computation [1.5 weeks]
    1. What is computing/computation?
    2. Digital computation, analog computation and nature's computation: Pros and Cons
    3. Digital computation
      1. Basic digital computational elements: Switches, transistors
      2. How to make basic gates
      3. How to build bigger/complex circuits
      4. Boolean Logic – Digital Circuit connection
      5. Truth table
      6. 1-bit addition, N-bit addition
      7. Memory
  • Von Neumann architecture [0.5 weeks]
    1. The separation abstraction of Memory, CPU.
    2. Fetch-Decode-Execute cycle
    3. Machine-level instructions
    4. Main registers: MAR, MDR, IR, PC
    5. Comparison with the Harvard Architecture
    6. Pros and Cons of separating data and instructions
  • Computer as a Turing Machine [0.5 Week]
    • A short discussion on what a Turing machine is
  • Introduction to Python [0.5 week]
    • An overviwe of the main features and version differences
  • Basic data types [0.5 week]
    1. Binary representation of integers, real numbers, characters, Boolean values and strings
    2. Corresponding data types in Python
  • Container Data Types [0.5 week]
    1. array vs. non-array containers
    2. strings, tuples and lists in Python
    3. operators with container data types in Python
    4. type conversion in Python
  • Expression Evaluation [0.5 week]
    1. Expressions and their evaluation
    2. operators' precedence and evaluation
    3. prefix, infix, postfix expressions
    4. an overview of expression evaluation algorithm
  • Actions for Input-Output [0.5 week]
    • Different mechanisms for I/O in Python
  • Basic and Compound Statements [0.5 week]
    1. single and multiple assignment
    2. del and other statements
    3. compound statements
  • Variables, Assignment and Aliasing [0.5 Week]

  • Conditional Execution [0.5 week]
    1. if statements
    2. nested if statements
    3. conditional expression
  • Functions [1 week]
    1. Defining a function
    2. Value of functions
    3. Call by value, sharing and reference
  • Recursion [1 week]
  • Iteration [1 week]
    1. for and while statements
    2. list/set comprehension
  • Abstract Data Types [2 week]
    1. Stack
    2. Queue
    3. Priority queue
    4. Trees
    5. Binary (Search) Trees
  • Object-oriented programming [0.5 weeks]
    1. Encapsulation, inheritance, polymorphism
    2. Examples with OOP
  • Overview of the world of programming [0.5 weeks]
    1. Compiled vs interpreted languages
    2. Programming paradigms: Imperative, Functional, Object-oriented, Declarative-Logical, Parallel-Concurrent
    3. How do we choose among the paradigms and the available languages?
    4. Current trend

Course Grading

Midterm Exam                                                           TBA 27%

Von Neumann Machine Exam

TBA 5%
Lab Exams (3-4)  TBA 30%
Participation   3%
Final Exam TBA 35%


METU Code of Ethics and Core Values

“The members of the METU community are reliable, responsible and honourable people who embrace only the success and recognition they deserve, and act with integrity in their use, evaluation and presentation of facts, data and documents.”

All students are expected to honour this code and the core values outlined at: https://www.metu.edu.tr/code-ethics-core-values

 

 

Plagiarism

All academic work, written or otherwise, submitted by students to their instructors or other academic supervisors, is expected to be the result of their own thought, research, or self-expression.
In cases where students feel unsure about a question of plagiarism involving their work, they are obliged to consult their instructors on the matter before submission.

When students submit work purporting to be their own, but which in any way borrows ideas, organization, wording or anything else from another source without appropriate acknowledgment of the fact, the students are guilty of plagiarism.

Plagiarism includes reproducing someone else's work, whether it be a published article, chapter of a book, a paper from a friend or some file, or whatever. Plagiarism also includes the practice of employing or allowing another person to alter or revise the work which a student submits as his/her own, whoever that other person may be.
Students may discuss assignments among themselves or with an instructor or tutor, but when the actual work is done, it must be done by the student, and the student alone.

When a student's assignment involves research in outside sources or information, the student must carefully acknowledge exactly what, where and how he/she has employed them.
If the words of someone else are used, the student must put quotation marks around the passage in question and add an appropriate indication of its origin. Making simple changes while leaving the organization, content and phraseology intact is plagiaristic. However, nothing in these Rules shall apply to those ideas which are so generally and freely circulated as to be a part of the public domain.

Cheating

Cheating is defined by its general usage. It includes, but is not limited to, the wrongfully giving, taking, or presenting any information or material by a student with the intent of aiding himself/herself or another on any academic work which is considered in any way in the determination of the final grade.

Lab

Laboratory Manual and Linux Cheat-Sheet

- Lab Manual Download

- Linux Cheat-Sheet Download

Linux Exercise

Linux Exercise Questions (Online Version)

The linux exercise questions are very similar to your first lab quiz in format.

Laboratory Contents & Schedule

The 'Date' column indicates the first day of the corresponding week, the day and time of each lab section for any specific week is given in the 'Laboratory Section Hours' table below. Lab Exams dates/weeks will be announced later.

Week Start Date Content LAB EXAM
1 Sep 28, 2026 (Week) No Lab -
2 Oct 05, 2026 (Week) No Lab -
3 Oct 12, 2026 (Week) Department Electronic Services, Introduction to Linux -
4 Oct 19, 2026 (Week) Linux Commands Von Neumann Machine Exam
5 Oct 26, 2026 (Week) Linux Commands -
6 Nov 02, 2026 (Week) Linux Quiz LE1: Linux Exam
7 Nov 09, 2026 (Week) Python introduction, Basic data types -
8 Nov 16, 2026 (Week) Advanced data types (str, list, tuple) -
9 Nov 23, 2026 (Week) Functions and conditionals Midterm
10 Nov 30, 2026 (Week) Recursion LE2
11 Dec 07, 2026 (Week) Iteration: for, while statements -
12 Dec 14, 2026 (Week) Iteration and Recursion - Recap LE3
13 Dec 21, 2026 (Week) Abstract Data Types: Stack, Queue and Tree -
14 Dec 28, 2026 (Week) More on trees: N-ary Trees LE4

Laboratory Section Hours (TBA)

  • Laboratory section hours will be announced later.

Library

Only downloadable from a METU IP (inside campus).

http://link.springer.com/book/10.1007/978-3-7091-1343-1

External Links

Below you will find links to some material that you can consult for the first part of Ceng111.

Vim Resources

Python Language Resources

Back to top

Last updated