Commit ffdfc6eb authored by 魔法少女赵志辉's avatar 魔法少女赵志辉 🍊
Browse files

明确了项目的提交和验收方式,增加了FAQ。

parent 19759684
......@@ -7,7 +7,7 @@
\vspace{-50pt}
\textbf{\Huge Project0}\\
\textbf{\huge 《高级程序设计》课程项目说明}\\
\small Version 1.3.0
\small Version 1.4.0
}
\author{刘添翼\thanks{\href{mailto:tyi.liu@outlook.com}{tyi.liu@outlook.com}}}
......@@ -47,7 +47,7 @@
如果想要选择其他自定义的项目,请参考这两个项目的文档,写一份自定义项目的文档提交给助教。在得到助教和老师的同意后,也可以按照该份文档给出的技术指标完成自己的项目。
\subsection{日程安排}
\subsection{日程安排}\label{sec:ddl}
2021年秋季学期有17周,从2021年8月30日起到2021年12月26日止。我们已经于2021年9月13日正式安排项目。
本学期的课程项目将分成三个阶段,每个阶段的最后期限分别设置在第6周、第11周和第16周结束时。
......@@ -62,70 +62,84 @@
但是该部分中的规定动作大部分已经通过注记的方式给出提示,希望这样能够起到帮助各位同学合理设计项目架构的作用。
\end{note}
\subsection{验收与评分标准}
助教将一对一验收每位同学的课程项目的每个阶段。因此,各位同学需要给出:
\begin{enumerate}
\item 课程项目的源代码。
\begin{itemize}
\item 在验收时,助教将就代码中自己感兴趣的点进行提问。各位同学被期望可以回答出这些问题。
\end{itemize}
\item 课程项目的可执行文件。
\begin{itemize}
\item 在验收时,助教将当面运行这个文件。各位同学被期望能向助教就课程项目的功能进行演示。
\end{itemize}
\item 课程项目的对应阶段的项目报告。
\begin{itemize}
\item 项目报告需要是一份\texttt{pdf}格式的文件。内容的具体组织方式不拘,长度宜\emph{},但要清楚地包含:
\begin{itemize}
\item 项目的整体设计,
\item 与实现方式。
\end{itemize}
例如,可以交代项目中主要含有的类,以及它们之间的交互。
还可以稍微提一提:
\begin{itemize}
\item 项目中有趣的地方,
\item 和完成项目时遇到的问题。
\end{itemize}
\item 助教可能就项目的整体设计进行提问。各位同学被期望能让助教理解自己的课程项目是如何被构建的。
\end{itemize}
\end{enumerate}
\subsection{代码的版本控制与提交}
课程项目的提交方式已经确定。
验收时,助教将对课程项目进行评分,评分标准包括:
\begin{itemize}
\item 是否实现了指定的功能,
\item 是否有一个\emph{好用的}(而不关心\emph{好看的})界面,
\item 是否实现了\emph{有趣的}(而不关心\emph{凑数的})功能。
\end{itemize}
\subsubsection{GitHub Classroom}
我们决定强行要求各位同学使用git来进行课程项目代码的版本控制。
\begin{note}
git是重要的代码版本控制工具。每位同学非常都有必要学习如何使用。git的入门资料很多,比如\url{https://git-scm.com/book/en/v2}\url{https://missing.csail.mit.edu/2020/version-control/}
\end{note}
请各位同学注册GitHub账号(如果还没有的的话)并加入GitHub Classroom,邀请链接可以在课程QQ群的公告中找到。
本学期的三个project将对应三个分别名为project1、project2和project3的assignment。
每个assignment限时开放,截止日期和\cref{sec:ddl}中所述一致。
在领取assignment后,各位同学的GitHub账户中将新建一个对应的空白的私有仓库,向这个仓库推送的内容被当做是各位同学在对应阶段的课程项目的提交,这些内容可以被我们看到和审阅。
\begin{note}
如果注册GitHub账号或者向GitHub上的仓库推送代码时遇到困难,可以考虑去位于基础实验楼乙区117、124、125和126的计算机系公共机房(只要它们开放)。
或者在assignment的提交期限之前,可以考虑临时添加一个位于\url{https://git.nju.edu.cn}的远端仓库并向该仓库进行推送。
\end{note}
GitHub Classroom中导入了一份已经过时的选课名单,如果某位同学的学号不在其中,请忽略绑定学号的过程并在课程QQ群的公告中填写相关的表单。
\subsection{打包与提交}
课程项目的提交方式截至本文档发布时还没有确定。
目前暂定为向一个公开的,托管在\url{https://git.nju.edu.cn}的git仓库提交pull request。
欲提交的文件的组织方式暂定如下:
\subsubsection{git仓库的组织方式}
为了方便,请各位同学大体按照如下方式组织仓库内的文件:
\begin{minted}{text}
201220000-赵志辉
\begin{minted}[linenos=false]{text}
.
├── bin
│ └── hello.out
├── doc
│ └── report.pdf
├── .gitignore
├── include
│ └── hello.hpp
├── lib
└── src
└── hello.cpp
├── src
│ └── hello.cpp
└── test
\end{minted}
\begin{note}
git是重要的代码版本控制工具。每位同学非常都有必要学习如何使用。git的入门资料很多,比如\url{https://git-scm.com/book/en/v2}
\end{note}
其中\texttt{bin}存放项目的用于验收的可执行文件,\texttt{doc}存放实验报告,\texttt{src}存放项目的源代码。这三个文件夹必须存在。
或许我们会要求各位同学提供一份构建指南,指导如何编译自己的项目。
\subsection{验收与评分标准}
我们将一对一验收每位同学的课程项目的每个阶段。
每次验收时,我们将对课程项目进行评分,评分标准包括:
\begin{itemize}
\item 是否完成了所有规定动作,
\item 是否能否看出各位同学的\emph{有意义的}工作量,
\item 是否有一个\emph{好用的}(而不关心\emph{好看的})界面,
\item 是否实现了\emph{有趣的}(而不关心\emph{凑数的})功能。
\end{itemize}
\subsubsection{可执行文件}
在验收时,我们将当场运行从仓库中取得的可执行文件。项目的可执行文件被期望且仅被期望能在各位同学的电脑上正常运行。
\begin{note}
直觉上说,既然是自己辛苦写出的软件,当然希望有更多用户来使用。不过这些用户可能使用不同的操作系统,使用不同的编译器,也可能没有安装软件运行所需要的库。如何指导这些用户在自己的电脑中编译课程项目,在某种程度上说是一件重要的事情。
如果想要面向更多用户发布自己的项目,可以考虑在构建用于发布的可执行文件的时候尽可能静态链接项目所依赖的库。
记得用Release Build。
\end{note}
各位同学被期望能向助教就课程项目的功能进行演示。
\subsubsection{源代码}
在验收时,我们将就代码中自己感兴趣的点进行提问;各位同学被期望可以回答出这些问题。
我们可能就项目的整体设计进行提问,各位同学被期望能让助教理解自己的课程项目是如何工作的。
\subsubsection{实验报告}
项目的实验报告需要是一份\texttt{pdf}格式的文件。
内容的具体组织方式不拘,长度宜\emph{},行文宜\emph{简明},只需清楚地包含:
\begin{itemize}
\item 项目的整体设计,
\item 与实现方式。
\end{itemize}
例如,可以交代项目中主要含有的类,以及它们之间的交互;交代使用的第三方库,以及使用到的那些库中的设施。
还可以稍微提一提:
\begin{itemize}
\item 项目中有趣的地方,
\item 和完成项目时遇到的问题。
\end{itemize}
\section{关于GUI}
\subsection{一些传统}
《高级程序设计》课程设计的传统包含实现GUI,所以这是一个规定动作。
......@@ -210,4 +224,55 @@ Visual Studio是Windows上非常流行的IDE(\textbf{I}ntegrated \textbf{D}eve
\item[\emph{\CC{} Primer}] 适合基础相对薄弱的同学。这本书写得很详细,适合作为入门读物。
\end{description}
除此之外,也可以参考互联网上的一些资料,比如\href{https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-abstract}{\emph{\CC{} Core Guidelines}}
\section{如何提问}
非常欢迎各位同学就课程的相关问题向助教和老师提问。
但请用\emph{正确}的方式提出\emph{}的问题。
各位同学可以参考\url{https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md}\url{https://github.com/tangx/Stop-Ask-Questions-The-Stupid-Ways/blob/master/README.md}
\subsection{提出问题的错误方式}
下面列举一些典型的错误的提出问题的方式。
\begin{problem}
(不给出完整的事实)为什么我的代码不工作。
\end{problem}
你的代码写成什么样子?你如何编译你的代码?
\begin{problem}
(不给出完整的想法)为什么我的代码给出错误的输出。
\end{problem}
你给了代码什么输入?你期望它输出什么呢?事实上它输出什么呢?
\subsection{提出坏的问题}
下面列举一些典型的坏的问题。
\begin{problem}
(不相干的问题)电脑出现了故障应该如何处理。
\end{problem}
请联系有能力处理这些故障的人,而不是你的程序设计课的助教。
当然,如果是和编程强相关的、软件方面的故障,而你自己毫无头绪,或许你可以问一问。
\begin{problem}
(可以在文档里找到答案的问题)实验报告应该要写些什么。
\end{problem}
\begin{problem}
(可以在文档里找到答案的问题,可以在搜索引擎里\textbf{非常轻松地}找到答案的问题)如何学习某个第三方的库。
\end{problem}
请至少看完课程已经发布的文档再提问。文档的存在就是为了节约所有人的时间。
当然,如果对文档本身感到困惑,欢迎联系我们。
\begin{problem}
(已经被回答的问题,可以在搜索引擎里\textbf{非常轻松地}找到答案的问题)编译器抱怨发现了一个error并停止编译,发生了什么。
\end{problem}
编译器讲的是人话(虽然是英语),真的。我们不想成为复读机,尤其是当问题的答案就在问题的描述里的时候。
当然,如果你相信问题不出在你的代码上,互联网上也没有相关的讨论的时候,欢迎和我们一起探讨。
\end{document}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment