程式設計
資訊管理學系 孔令傑
課程簡介
中文課程名稱:程式設計
英文課程名稱:Programming Design
授課教師:孔令傑
學分數:3 學分
開課單位:資訊管理學系
建立日期:2022 年 9 月
課程概述
In this course, we will introduce how to write computer programs for general purposes. The programming language we will study is C++, one of the most popular and powerful high-level programming language nowadays. In this semester, we will focus on the procedural programming part of C++, which is quite similar to the programming language C. The introduction of those object-oriented features of C++ will be in the next semester. While we will spend a lot of time on how to write “correct” programs, we will also try to write “good” programs, i.e., those run faster, using less memory, having better formats, generating friendly user interfaces, being more extendable, etc. The language C++ is just something that facilitates the delivery of the principles of computer programming. What really matter are the conceptual principles, not the C++ syntax or rules. Our objective is not to teach you how to write C++ programs; we want to make you be able to teach yourself any other programming languages. C++ is chosen to be taught in this course mainly because, in my opinion, it is a “broad” language. This will be discussed in lectures.
This is a required course for first-year undergraduate students in the Department of Information Management in National Taiwan University. We do not assume any background in computer programming, and there is no prerequisite for this course.
成績評量方式
Homework: 35%.
Midterm project: 15%. Final project: 25%.
A quiz: 2%.
Two exams: 23% (15% each for the higher one and 8% for the lower one).
“Flipped classroom”. The main idea of flipped classroom is “lectures in videos, discussions in classes.”Before most lectures, the instructor will upload videos containing some materials to be discussed on that day. The total length of those videos for one lecture will be around 60 to 90 minutes. Students must find their own time to watch the videos before the lecture. During lectures, we answer students’ questions regarding materials in the videos, provide exercise problems for students to do on-site exercises, and talk about some supplemental materials. Lecture problems do not count for grades; they are for the learning purpose only.
Homework. For most weeks, one homework will be assigned on Monday or Tuesday and due in oneweek. Please upload your C++ source codes (and other files, if required) to the online grading system PDOGS by the due time. No submission in class or in lab. No hard copy. No late submission. While discussions are highly encouraged, each student must turn in her/his own homework. Cheating will result in severe penalty for everyone involved. The lowest two homework grades will be dropped (i.e., you may skip two homework if you want).
PDOGS. For homework of this course, we rely heavily on the Programming Design Online GradingSystem (PDOGS, or P-Dogs). After a student uploads her/his C++ source file, the system will automatically compile and run the program with respect to some testing data, calculate grades, and display the grades to the student. One may repeatedly modify his program and upload again and again until she/he is satisfied. Only the last grades will be recorded.
TAs’ office hour. Students are strongly encouraged to attend office hour on Thursday evening. TAswill be there to answer students’ questions and give feedback to students. Students are also welcome to use the office hour time to discuss their homework assignments. The attendance do not count for any grade. However, attending office hour can be as useful as attending lectures if you are a beginner.
Office hour. You are welcome to the instructor’s office hour to ask him any question. You may askhim to clarify some concepts, give hints for homework problems, or discuss the final project. In fact, discussions not related to course materials are also welcome. However, because one must have enough painful experiences in debugging and revising programs, the instructor (and TAs) may refuse to debug for any student. If you want to schedule a meeting, please feel free to send the instructor an e-mail at any time.
Attendance and class participation. We do not count attendance. If you have something moreimportant to do, feel free to drop a lecture or a lab. Nevertheless, we encourage class participation and include it in evaluating each student. During lecture time or office hour, you are more than welcome to ask or answer questions and provide comments. You are also encouraged to use Piazza for after-class discussions.
Midterm and final projects. Students should form teams to do one midterm and one final projects.One’s teammates may be different for the two projects. For the midterm project, a task will be specified by the instructor for all teams to work on. For the final project, the instructor will only specify a rough direction. Each team then decides its own topic, build a program for its own objective, and demonstrate its program to the class publicly.
Exams. For two Tuesdays we will have exams during the lecture time. Students will be asked to writeseveral C++ programs in three hours. One needs to prepare her/his own laptop (or ask for the instructing team’s help in advance). The Internet will remain active throughout the exams, and one is allowed to search whatever she/he wants online. However, no communication with any living person is allowed. Cheating will result in a severe penalty for everyone involved.