mirror of
https://github.com/kmc7468/cs220.git
synced 2025-12-12 21:08:45 +00:00
Add readme
This commit is contained in:
222
README.md
Normal file
222
README.md
Normal file
@@ -0,0 +1,222 @@
|
||||
# KAIST CS220: Programming Principles
|
||||
|
||||
## Logistics
|
||||
|
||||
- Instructor: [Jeehoon Kang](https://cp.kaist.ac.kr/jeehoon.kang)
|
||||
- Time: Tue & Thu 13:00pm-14:15pm
|
||||
- Place
|
||||
+ Rm. 1501, Bldg. E3-1. **YOUR PHYSICAL ATTENDANCE IS REQUIRED** unless announced otherwise.
|
||||
+ [Zoom room](https://kaist.zoom.us/my/jeehoon.kang) (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/12
|
||||
- Announcements: in [issue tracker](https://github.com/kaist-cp/cs220/issues?q=is%3Aissue+is%3Aopen+label%3Aannouncement)
|
||||
+ We assume you read each announcement within 24 hours.
|
||||
+ We strongly recommend you to watch the repository.
|
||||
- TA: [Minseong Jang](https://cp.kaist.ac.kr/minseong.jang), [Jaemin Choi](https://cp.kaist.ac.kr/jaemin.choi), [Seungmin Jeon](https://cp.kaist.ac.kr/seungmin.jeon), [Jaehwang Jung](https://cp.kaist.ac.kr/jaehwang.jung)
|
||||
+ Office Hour: TBA. See [below](https://github.com/kaist-cp/cs220#rules) for office hour policy.
|
||||
<!-- Fri 9:00am-12:00pm, [Zoom room](https://zoom.us/j/4842624821)(The passcode is same as the class). It is not required, but if you want to come, do so by 9:30am. See [below](#communication) for office hour policy. -->
|
||||
|
||||
|
||||
|
||||
## Course description
|
||||
|
||||
### Textbook
|
||||
|
||||
- [Slides](https://docs.google.com/presentation/d/17G3SwkE_tq0H3lTt9N0ysIbHhqDZBfHkoWD5LwwAKSo/edit#slide=id.p)
|
||||
- [The Rust Book](https://doc.rust-lang.org/book/)
|
||||
|
||||
|
||||
### 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.
|
||||
|
||||
|
||||
### Tools
|
||||
|
||||
Make sure you're capable of using the following development tools:
|
||||
|
||||
- [Git](https://git-scm.com/): for downloading the homework skeleton and version-controlling your
|
||||
development. If you're not familiar with Git, walk through [this
|
||||
tutorial](https://www.atlassian.com/git/tutorials).
|
||||
|
||||
+ **IMPORTANT**: you should not expose your work to others. In particular, you should not fork
|
||||
the [upstream](https://github.com/kaist-cp/cs220) and push there. Please the following
|
||||
steps:
|
||||
|
||||
* Directly clone the upstream without forking it.
|
||||
|
||||
```bash
|
||||
$ 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`.
|
||||
|
||||
```bash
|
||||
$ 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](https://education.github.com/students).
|
||||
|
||||
* Set up your repository as a remote.
|
||||
|
||||
```bash
|
||||
$ 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.
|
||||
|
||||
```bash
|
||||
$ git push -u origin main
|
||||
```
|
||||
|
||||
- [Rust](https://www.rust-lang.org/): 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](https://cp.kaist.ac.kr/helpdesk#technical-expertise) that describes how to study Rust.
|
||||
|
||||
- [Visual Studio Code](https://code.visualstudio.com/) (optional): for developing your homework. If you prefer other editors, you're good to go.
|
||||
|
||||
- You can connect to server by `ssh s<student-id>@cp-service.kaist.ac.kr -p13000`, e.g., `ssh s20071163@cp-service.kaist.ac.kr -p13000`.
|
||||
|
||||
+ **IMPORTANT: Don't try to hack. Don't try to freeze the server. Please be nice.**
|
||||
|
||||
+ Your initial password is `123454321`. IMPORTANT: you should change it ASAP.
|
||||
|
||||
+ I require you to register public SSH keys to the server. (In March, we'll expire your password so that you can log in only via SSH keys.)
|
||||
See [this tutorial](https://serverpilot.io/docs/how-to-use-ssh-public-key-authentication/) for more information on SSH public key authentication.
|
||||
Use `ed25519`.
|
||||
|
||||
+ In your client, you may want to set your `~/.ssh/config` as follows for easier SSH access:
|
||||
|
||||
```
|
||||
Host cs220
|
||||
Hostname cp-service.kaist.ac.kr
|
||||
Port 13000
|
||||
User s20071163
|
||||
```
|
||||
|
||||
Then you can connect to the server by `ssh cs220`.
|
||||
|
||||
+ Now you can [use it as a VSCode remote server as in the video](https://www.youtube.com/watch?v=TTVuUIhdn_g&list=PL5aMzERQ_OZ8RWqn-XiZLXm1IJuaQbXp0&index=3).
|
||||
|
||||
+ [NOTE: We recommend the `rust-analyzer` plugin instead of `rls`](https://github.com/rust-analyzer/rust-analyzer).
|
||||
|
||||
+ [NOTE: If permission denied error occurs when trying to install `CodeLLDB Extension` into the
|
||||
remote server](https://github.com/kaist-cp/cs420/issues/5), please follow the steps:
|
||||
1. Download [this file](https://github.com/vadimcn/vscode-lldb/releases/download/v1.5.0/codelldb-x86_64-linux.vsix) at the remote server.
|
||||
1. Follow [the instructions](https://code.visualstudio.com/docs/editor/extension-gallery#_install-from-a-vsix) to install it.
|
||||
|
||||
+ [NOTE: If you cannot connect to the remote server via VSCode with `fail to create hard link` error message](https://github.com/kaist-cp/cs420/issues/91), please follow the steps:
|
||||
1. Close VSCode window and try to connect to the remote server via terminal(or cmd). If you encounter `Connection timed out` error message, try again after a few minutes.
|
||||
1. Delete all the files in `~/.vscode-server/bin/`.
|
||||
|
||||
|
||||
## 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](https://www.google.com/search?q=code+plagiarism+detector&tbm=isch) 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%)
|
||||
|
||||
For details, see <https://gg.kaist.ac.kr/course/12>.
|
||||
|
||||
|
||||
### Midterm and final exams (60%)
|
||||
|
||||
- Date & Time: TBA (midterm) and TBA (final), 13:00pm-15:45pm (or shorter, TBA)
|
||||
|
||||
- Place: Rm. 1501, Bldg. E3-1, KAIST
|
||||
|
||||
+ If online participation is absolutely necessary, we'll use Zoom.
|
||||
|
||||
|
||||
### Attendance (?%)
|
||||
|
||||
- You should solve a quiz at the [Course Management](https://gg.kaist.ac.kr/course/12) website for each session. **You should answer to 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](https://gg.kaist.ac.kr).
|
||||
|
||||
+ Reset your password here: https://gg.kaist.ac.kr/accounts/password_reset/
|
||||
The email address is your `@kaist.ac.kr` address.
|
||||
|
||||
+ The id is your student id (e.g., 20071163).
|
||||
|
||||
+ Log in with your student id and the new password.
|
||||
If you cannot, please contact the head TA in the chat.
|
||||
|
||||
### Rules
|
||||
|
||||
- Course-related announcements and information will be posted on the
|
||||
[website](https://github.com/kaist-cp/cs220) as well as on the [GitHub issue
|
||||
tracker](https://github.com/kaist-cp/cs220/issues). 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 you email address.
|
||||
|
||||
- Ask questions on course materials and assignments in [this repository's issue tracker](https://github.com/kaist-cp/cs220/issues).
|
||||
+ Don't send emails to the instructor or TAs for course materials and assignments.
|
||||
+ Before asking a question, search it in Google and Stack Overflow.
|
||||
+ Describe your question as detailed as possible. It should include 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](https://guides.github.com/features/mastering-markdown/).
|
||||
* Any directory or file changes you've made. If it is 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](https://cp-git.kaist.ac.kr/cs220/cs220#communication) 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 reach an answer. Second, you can benefit from 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 the office hour. 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](https://support.zoom.us/hc/en-us/articles/201363203-Customizing-your-profile).
|
||||
|
||||
- This course is conducted in English. But you may ask questions in Korean. Then I will translate it to English.
|
||||
Reference in New Issue
Block a user