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) + Wednesday 15:40 - 16:30 (BMB-1) - Sinan Kalkan
  • Section 2: Tuesday 09:40 - 11:30 (BMB-1) + Thursday 10:40 - 11:30 (BMB-1) - Göktürk Üçoluk

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

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

- Göktürk Üçoluk, A408, ucoluk[at]ceng.metu.edu.tr

Teaching Assistants

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

- Merve Asiler, B207, asiler[at]ceng.metu.edu.tr

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

- Mustafa Yavuz Kara, A409, myk[at]ceng.metu.edu.tr

- Atakan Garipler, B202, garipler[at]ceng.metu.edu.tr

- Saim Sünel, A410, saimsunel[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.)
  • Invitation to Computer Science, by G. Schneider and J. Gersting, West.

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

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, the vi editor, conducting intelligent searches on the internet, etc.)
    2. To experiment with Python and perform some small algorithmic applications in a closed-lab environment.
  • For each lab session, you will have an examination from which you will gain an important fraction of the course grade.
  • Take-Home Exams have a contribution to your overall grade the same as the midterm examination does. We strongly advise that you take the exams seriously. There are 4 Take-Home Exams. The last three Take-Home Exams are Python programming tasks and will be graded automatically (by means of a testing program). Though the input/output testing of a Take-Home Exams is a “blackbox test”, your source code will be investigated for neatness and plagiarism. 

This work is considered as EXAMINATION. Any plagiarism will be considered as CHEATING IN EXAMINATION.

  • Usually you will have a 2-3 weeks of time to turn your take-home exams in. This time shall 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 [2 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, vacuum tubes, water stream taps
      2. How to make basic gates
      3. Boolean Logic – Digital Circuit connection
      4. Truth table
      5. 1-bit addition, N-bit addition
      6. Memory: Using capacitance
      7. 1-bit addition, N-bit addition
    4. Von Neumann architecture
      1. The separation abstraction of Memory, CPU.
      2. Pros and cons
      3. Conceptional separation of data & algorithm
      4. Limits of the register size and the processer design on the types of the primitive data
      5. Overcoming these limits
  • Binary Representation of: [0.5 Week]
    1. Integers: 2s and 1s complement
    2. Floating points (IEEE 754 standard)
    3. Characters (ASCII Table)
    4. Strings
  • Von Neumann Architecture: Revisited [0.5 Week]
    1. Machine-level instructions
    2. Fetch-Decode-Execute cycle and how it works
    3. Different registers: MAR, MDR, IR, PC
    4. The need for higher-level languages: assemblers and more
  • Other components of a computer [0.5 week]
    1. BIOS, Boot device, MBR, OS
    2. Booting up a computer
    3. Interrupts: service interrupts and time interrupts. Their importance and usage.
    4. Virtual memory. Physical and logical addresses. Paging. DMA.
    5. Rotational Storage Devices
  • The world of programming and the zoo of programming languages: [0.5 week]
    1. Compiled vs. interpreted languages
    2. Programming paradigms:
      1. Imperative, Functional, Object-oriented, Declarative-Logical, Parallel-Concurrent
    3. How do we choose among the paradigms and the available languages?
    4. Current trend
  • 'Simple' data types [0.5 week]
    1. number: float, int
    2. string: str
    3. list: lists of numbers, strings and nested lists
    4. variables and naming conventions
    5. type function
  • Introduction to operators [1 week]
    1. Operators on numbers: Addition, multiplication, division (integer and float)
    2. Operators on strings: Concatenation, repetition
    3. Operators on lists: Length, access and membership operators, addition, deletion
    4. BNF notation
    5. Precedence & Associativity
    6. Explicit, implicit casting; type conversion
    7. Assignment; l-type, r-type expressions
    8. Expression evaluation
  • Conditionals and loops [1 week]
    1. Boolean values
    2. Turing machine; determinism, discreteness and conditionals
    3. if statements
    4. while, for statements
  • Functions [2 weeks]
    1. System defined: type, length, print
      1. Using “import”
      2. Simple math functions
    2. User defined
      1. Defining a function
      2. Value of functions
      3. Call by value, reference and sharing
    3. Recursion
  • Abstract Data Types [3 week]
    1. Stack
    2. Queue, priority queue
    3. Tree
    4. and others
  • Object-oriented programming [1 weeks]
    1. Why need objects?
    2. Member variables and methods; private vs. public members
    3. Encapsulation, inheritance, polymorhpism

Course Grading

Midterm Exam                                                          [December 4, Wednesday, 18:00] 18%
Take Home Exams (THEs) (4)                           [THE-1: November 4, Monday, 18:00] 25%
In-lab exams 32%
Participation 3%
Final Exam 22%

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

Notes about the Conduct of the Course under Pandemic

  1. The course will be conducted with face-to-face, conforming to the health and safety regulations outlined by the Ministry of Health, the Council of Higher Education, the University and the Department.
  2. This “face-to-face” conduct means that all lectures, the laboratory sessions, and midterm & final exams will take place in classrooms or laboratories, physically.
  3. In the event that department-wide, university-wide, city-wide or nation-wide closures are introduced, the course conduct will continue remotely and the details of the conduct will be determined by the specifications of the closures. Such an online conduct of the course will assume that the students have access to a personal computer, a camera (or a mobile phone with a camera) and the Internet for online participation in lectures, labs and exams.
  4. In the event of a violation of METU Code of Ethics, the affected activities, questions or tasks may be canceled, re-organized or their contribution to the overall grading may be changed; additional forms of performance validation (verbally or in written form) may be required.

Take Home Exam

Take Home Exam Regulations

Late Submission

For ALL Take Home Exam submissions, late submission is NOT allowed. The deadline is the last second where the day of submission changes to the day after.
This grading policy is strict!

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.

Week Start Date Content Quiz
1 Sep 30 No Lab -
2 Oct 07 No Lab -
3 Oct 14 Department Electronic Services, Introduction to Linux -
4 Oct 21 Linux Commands -
5 Oct 28 Linux Commands, Vim Quiz-0 (Practice)
6 Nov 04 Linux Quiz Quiz-1 (In lab session time)
7 Nov 11 Python introduction, Basic data types -
8 Nov 18 Advanced data types (str, list, tuple) Quiz-2 (November 18, Monday, 18:00-20:00)
9 Nov 25 Functions and conditionals Quiz-3 (November 25, Monday, 18:00-20:00)
10 Dec 02 Recursion Quiz-4 (December 2,  Monday, 18:00-20:00)
11 Dec 09 Iteration: for, while statements Quiz-5 (December 9,  Monday, 18:00-20:00)
12 Dec 16 Advanced Iteration, Exceptions, File Handling and Debugging Quiz-6 (December 16,  Monday, 18:00-20:00)
13 Dec 23 Abstract Data Types: Stack and Queue Quiz-7 (December 23,  Monday, 18:00-20:00)
14 Dec 30 Abstract Data Types: Binary Trees & N-ary Trees  Quiz-8 (December 30,  Monday, 18:00-20:00)

Laboratory Section Hours

  • Section 1: Wednesday 10:40-12:30 – Mera Lab     (assistant: Atakan Garipler)
  • Section 2: Thursday 9:40-11:30      – Digital Lab   (assistant: Selay Tekgül)
  • Section 3: Thursday 15:40-17:30    – Digital Lab   (assistant: Merve Asiler)
  • Section 4: Friday 10:40-12:30         – Digital Lab   (assistant: Mustafa Yavuz Kara)
  • Section 5: Friday 15:40-17:30         – Mera Lab     (assistant: Orhun Buğra Baran)
  • Section 6: Friday 15:40-17:30         – Digital Lab   (assistant: Saim Sünel)

Laboratory Section Arrangement

Section-1 Section-2 Section-3 Section-4 Section-5 Section-6
209883 240072 258076 203078 244908 265721 
230571 258074 262834 230411 246779 265808 
260794 262968 263345 251610 261189 269219 
263300 263312 268257 261206 262908 269221 
268243 263322 268283 261475 263382 270313 
268244 267813 268285 262962 264616 270356 
268245 268253 268287 268279 268263 270384 
268246 268262 268292 268281 268278 270395 
268247 268266 268293 268305 268284 270531 
268248 268268 268294 268317 268290 270563 
268249 268269 268299 268318 268298 270603 
268250 268270 268300 268321 268328 273525 
268252 268271 268301 268325 268339 273526 
268254 268272 268302 268326 268341 273551 
268255 268274 268303 268327 268342 273565 
268256 268276 268304 268329 268343 273570 
268258 268277 268306 268330 268345 273571 
268259 268280 268307 268331 268346 273580 
268260 268282 268310 268332 268350 273590 
268261 268286 268311 268333 268351 273600 
268264 268288 268312 268334 272786  
268265 268296 268315 268335 272856  
268267 268309 268319 268336 272863  
269518 268324 268320 268337 273688  
272757 268347 272793 268338 273690  
272758 268349 272810 268340    
272759 269578 272811 270444    
272762 272794 272813 272817    
272768 272795 272834 272833    
272771 273691 272838 273687    

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