polish See merge request kaist-cp-class/cs220-private!22
KAIST CS220: Programming Principles
Logistics
- Instructor: Jeehoon Kang
- Time: Mon & Wed 14:30pm-15:45pm
- Place
- Rm. 304, Bldg. E11. YOUR PHYSICAL ATTENDANCE IS REQUIRED unless announced otherwise.
- Zoom room (if remote participation is absolutely necessary). The passcode is announced at KLMS.
- Websites: https://github.com/kaist-cp/cs220, https://gg.kaist.ac.kr/course/17/
- Announcements: in issue tracker
- We assume you read each announcement within 24 hours.
- We strongly recommend you to watch the repository.
- TA: Haechan An, Jungin Rhee, Woojin Lee
- Office Hour: Fri 9:15am-10:15am, Rm. 4432, Bldg. E3-1. If you want to come, do so by 9:30am. See below for office hour policy.
- IMPORTANT: you should not expose your work to others. In particular, you should not fork the upstream and push there.
Course description
Textbook
Prerequisites
-
It is strongly recommended that students already took courses on:
- Mathematics (MAS101): proposition statement and proof
- Programming (CS101): basic programming skills
-
Without a proper understanding of these topics, you will likely struggle in this course.
-
In the assignment, for the concepts that don't come out in prerequisite courses, we tried to comment on the relevant resources in the assignment code. Please read them carefully.
Tools
Make sure that you're capable of using the following development tools:
-
Git: for downloading the homework skeleton and version-controlling your development. If you're not familiar with Git, walk through this tutorial.
-
IMPORTANT: you should not expose your work to others. In particular, you should not fork the upstream and push there. Please the following steps:
-
Directly clone the upstream without forking it.
$ git clone --origin upstream git@github.com:kaist-cp/cs220.git $ cd cs220 $ git remote -v upstream git@github.com:kaist-cp/cs220.git (fetch) upstream git@github.com:kaist-cp/cs220.git (push) -
To get updates from the upstream, fetch and merge
upstream/main.$ git fetch upstream $ git merge upstream/main
-
-
If you want to manage your development in a Git server, please create your own private repository.
-
You may upgrade your GitHub account to "PRO", which is free of charge.
Refer to the documentation. -
Set up your repository as a remote.
$ git remote add origin git@github.com:<github-id>/cs220.git $ git remote -v origin git@github.com:<github-id>/cs220.git (fetch) origin git@github.com:<github-id>/cs220.git (push) upstream git@github.com:kaist-cp/cs220.git (fetch) upstream git@github.com:kaist-cp/cs220.git (push) -
Push to your repository.
$ git push -u origin main
-
-
-
Rust: as the language of homework implementation. We chose Rust because its ownership type system greatly simplifies the development of large-scale system software.
- We recommend you to read this page that describes how to study Rust.
cargo doc --openon your local will show you the documentation for each homework.
-
Visual Studio Code (optional): for developing your homework. If you prefer other editors, you're good to go.
-
ChatGPT or other LLMs (optional): for your homework.
- In the era of LLM, we believe that it is important to learn how to use AI as a programming partner.
- We adjusted the difficulty of homework so that you can challenge using ChatGPT as your programming partner. We checked with ChatGPT version 3.5, and verified that it can be a nice tool. Cooperatie with LLM actively to write skeleton code, explain, and debug.
-
-
IMPORTANT: Don't try to hack. Don't try to freeze the server. Please be nice.
-
Now you can use it as a VSCode remote server as in the video.
-
NOTE: If permission denied error occurs when trying to install
CodeLLDB Extensioninto the remote server, please follow the steps:- Download this file at the remote server.
- Follow the instructions to install it.
-
NOTE: If you cannot connect to the remote server via VSCode with
fail to create hard linkerror message, please follow the steps:- Close VSCode window and try to connect to the remote server via terminal(or cmd). If you encounter
Connection timed outerror message, try again after a few minutes. - Delete all the files in
~/.vscode-server/bin/.
- Close VSCode window and try to connect to the remote server via terminal(or cmd). If you encounter
-
Grading & honor code
Cheating
IMPORTANT: PAY CLOSE ATTENTION. VERY SERIOUS.
-
Please sign the KAIST CS Honor Code for this semester. Otherwise, you may be expelled from the course.
-
We will use sophisticated tools for detecting code plagiarism.
- Google "code plagiarism detector" for images and see how these tools can detect "sophisticated" plagiarisms. You really cannot escape my catch. Just don't try plagiarism in any form.
Programming assignments (40%)
- We'll announce all assignments before the semester begins.
- Submit your solution to https://gg.kaist.ac.kr/course/17.
- Read the documentation at https://cp.kaist.ac.kr/cs220/cs220/.
- You're allowed to use ChatGPT or other LLMs. Instead, you'll solve more problems than previous semesters.
Midterm and final exams (60%)
-
Date & Time: Oct 18 (midterm) and Dec 13 (final), 13:00pm-15:45pm (or shorter, TBA)
-
Place: Rm. 304, Bldg. E11, KAIST
-
Your physical apperance is required. If online participation is absolutely necessary, we'll use Zoom.
-
You'll bring your own laptop. (You can also borrow one from School of Computing Admin Team.) We will use surveillance tools such as Safe Exam Browser to monitor your laptop.
Attendance (?%)
-
You should solve a quiz at the Course Management website for each session. You should answer the quiz by the end of the day.
-
If you miss a significant number of sessions, you'll automatically get an F.
Communication
Registration
-
Make sure you can log in the lab submission website.
-
Log in with your
kaist-cp-classaccount. -
Your id is your
@kaist.ac.kremail address. -
Reset your password here: https://auth.fearless.systems/if/flow/default-recovery-flow/
-
If you cannot log in, please contact the instructor.
-
Rules
-
Course-related announcements and information will be posted on the website as well as on the GitHub issue tracker. You are expected to read all announcements within 24 hours of their being posted. It is highly recommended to watch the repository so that new announcements will automatically be delivered to your email address.
-
Ask questions on course materials and assignments in this repository's issue tracker.
-
Don't send emails to the instructor or TAs for course materials and assignments.
-
Before asking a question, search for it in Google and Stack Overflow.
-
When creating a new issue, you are going to be asked to fill out a template. Make sure that you fill out the template properly.
-
Describe your question in as much detail as possible. It should include the following things:
- Environment (OS, gcc, g++ version, and any other related program information).
- Command(s) that you used and the result. Any logs should be formatted in code. Refer to this.
- Any directory or file changes you've made. If it is the solution file, just describe which part of the code is modified.
- Googling result. Search before asking, and share the keyword used for searching and what you've learned from it.
-
Give a proper title to your issue.
-
Read this for more instructions.
-
I'm requiring you to ask questions online first for two reasons. First, clearly writing a question is the first step to reaching an answer. Second, you can benefit from the questions and answers of other students.
-
-
Ask your questions via email only if they are either confidential or personal. Any questions failing to do so (e.g. email questions on course materials) will not be answered.
-
We are NOT going to discuss new questions during office hours. Before coming to the office hour, please check if there is a similar question on the issue tracker. If there isn't, file a new issue and start discussion there. The agenda of the office hour will be the issues that are not resolved yet.
-
Emails to the instructor or the head TA should begin with "CS220:" in the subject line, followed by a brief description of the purpose of your email. The content should at least contain your name and student number. Any emails failing to do so (e.g. emails without student number) will not be answered.
-
If you join the session remotely from Zoom (https://kaist.zoom.us/my/jeehoon.kang), your Zoom name should be
<your student number> <your name>(e.g.,20071163 강지훈). Change your name by referring to this. -
This course is conducted in English. But you may ask questions in Korean. Then I will translate it to English.
Ignore
1830eaed90e5986c75320daaf131bd3730b8575e866c4e92935a690e7c2a0716