1Are the lecture notes on your website sufficient for the courses? Do I also need to buy the textbook you recommend?
The main purpose of the lecture notes is to make the lectures easier to present and to understand. The lecturer does not spend time writing on the board, and students can listen instead of taking notes. I have tried to keep my lecture notes as comprehensive as possible, so that they serve as a resource students can refer to after class as well. However, my notes are not a substitute for attending the lectures. To fully understand the topics, you need to follow the lectures, add your own explanations to the notes when necessary, and pay attention to the points clarified in response to questions asked in class.
Buying the recommended textbook is not required to succeed in the course. However, to grasp a topic taught at university level, you should not rely on a single source; you should do research using different resources. The books I recommend are valuable because they help you understand the topics better, contain additional problems, and serve as references when needed. Even if you do not buy the book, I recommend borrowing it from the library. Today, in addition to printed books, there are many electronic resources on the Internet. These resources are listed on the web pages of the related courses.
2I am a faculty member / student at ..... University. May I use your lecture notes in my own course?
When I put my lecture notes on my website, I did not place any restrictions on access from outside ITU. I am glad when those interested in the subject benefit from the resources I have prepared. Students may freely use the notes to improve their own knowledge. However, if you use them beyond your own studies, for example for teaching or in a publication (printed or electronic), you are ethically required to cite them as a reference. I suggest that you put a link to my page, because I continuously update my lecture notes according to advancing technology and my teaching experience.
License of my lecture notes: Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International
3You are not my advisor; may I still come and consult you on a particular subject?
At the beginning of each semester, I announce my weekly schedule and my office hours on my website. You can make an appointment and come during these hours.
4I am stuck on a problem. Could you help me solve it by email?
Since my time is limited, I give priority to my thesis/graduation project students and then to problems related to the courses I teach. If I have enough time, I also try to answer emails about other problems. If I could not reply to such an email of yours, it is not because I did not care, but because I could not find the time.
5Why do you teach C++ in the Object-Oriented Programming (OOP) course? Wouldn't Java (or C#) be better?
This question stems from a misunderstanding. As the name of the course suggests, I am not trying to teach C++ (or Java, C#), but the object-oriented programming (OOP) approach. In this course I only give the examples in C++; they could just as well be in Java (C#). In fact, in the “Object-Oriented Modeling and Design” course, where I cover design (see OOMD), I give some examples in Java.
Someone who has grasped the OOP philosophy can easily learn any language that supports it. Moreover, programming languages other than those taught today may well emerge in the future. Depending on the job and the application, each language has its place. In my opinion, what matters is understanding the philosophy and the way of thinking. The mechanical rules of a language or platform can be learned easily. It is like playing chess: learning how the pieces move is easy and can be learned from a book, but to become a master player you must develop your way of thinking through experience.
One thing that encourages me to give my examples in C++ is that moving from C++ to other languages is easy. In the graduation project phase, our students develop their software using a wide variety of platforms and languages.
Which language should be used to start teaching programming in which department is still a debated and unresolved issue at universities all over the world.
6Which compiler and platform do you recommend for the Object-Oriented Programming (OOP) course?
The examples given in the course are written according to the latest C++ standard, independent of any compiler or platform. Therefore, they can be compiled and run with any compiler that supports the ISO/IEC 14882 standard (latest version: 2023 draft), under any operating system (Windows or Unix/Linux).
7I got a lower grade than I expected in the exam (I am curious about my mistakes). May I come and see my exam paper?
After grading, I leave the exam papers of my undergraduate courses with the teaching assistant of the course. You can see your paper during the assistant's office hours. I usually publish the solutions on the course web page after the exams. Before going to see your paper, be sure to get and study the solutions. If I have not published the solutions, prepare the correct answers yourself.
If, after examining your paper, you think there is a mistake in your grade, give the necessary information to the teaching assistant; I will re-examine your paper.
The exam papers of my graduate courses are kept by me. Graduate students can see their papers by making an appointment with me.
8Can you extend the deadline of a homework/project?
No.
When setting the deadlines of projects (homework), I take into account how long the project will take and the fact that you also have assignments (and even exams) from other courses. The reason deadlines are strict is to make you work with discipline under certain constraints. In professional life (in the real world), you will also have to finish your projects within given time limits despite your workload. My aim in my courses is to prepare you for the engineering world as much as possible, not to make things hard for you.
Submit your project (homework) on the due date with as much as you have been able to complete.
9Can you change the exam date?
I announce the dates of the midterm exams on the course web page within the first two weeks after classes start. In courses with two midterms, I schedule the exams in weeks 6 and 12 (±1); in courses with a single midterm, in week 8 or 9. The choice of weeks depends on the holidays in that semester and the topics I plan to cover. Therefore, I cannot set exam dates very flexibly. Still, if you think there is a problem with an exam date and let me know within the week I announce the dates, I will try to adjust them. One week after the announcement, however, it is no longer possible for me to change the dates.
Final exam dates are set by the university's automation system. I have no influence on them.
10People say the Computer Architecture course is very difficult. Is that true?
Students who have passed a course enjoy scaring those who come after them with such stories. In a way this is actually useful, because it makes students put effort into the course.
When we look at the results at the end of the semester, we see that most of the students who failed did not attend classes, did not do their assignments, did not take the exams, or handed in blank exam papers. When we exclude students who did not take the final exam or handed in a blank paper, the pass rate in many courses exceeds 90%.
Of course, none of this means the course is easy; it shows that the courses can be passed when the necessary effort is made.
One of the difficulties of professional courses is that the topics depend on each other. To understand the topics of one course, you need to remember those taught in earlier courses. For example, Computer Architecture is the last hardware course in our department and is closely related to the topics taught in the earlier hardware courses (Digital Circuits, Hardware Organization, Microprocessor Systems and the related laboratories). Therefore, you need to have understood the topics of previous courses well and to refresh what you have forgotten.
Another reason our professional courses are hard is that they are design-based. It is not possible to succeed in the exam just by memorizing certain facts. You must also understand how to use that knowledge while solving problems (while designing). To achieve this, you should solve as many problems as possible. You can find many examples on the web pages of my courses and on the Internet.
11My midterm grades were low and my final exam today went badly too, but I must pass this course (my studies are taking longer, my family is upset, I am tired of school, etc.). Can you help me?
How could I? There is nothing left that can be done. If you had told me during the semester that you had a problem with this course, I would have helped you study it. You could have asked me or the teaching assistant about the parts and questions you did not understand.
After all the grades are known, I only determine the letter grades according to the class average and the ranking of the students. It is not possible for me to raise the rank of a student with a low average.
I am sorry for you; it does not make me happy when my students fail, but there is nothing more to be done.