Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
魔法少女赵志辉
ap2021a-project
Commits
4337240e
Commit
4337240e
authored
Sep 13, 2021
by
魔法少女赵志辉
🍊
Browse files
加入更多注记。
parent
6ea19414
Changes
2
Hide whitespace changes
Inline
Side-by-side
project0/project0.pdf
View file @
4337240e
No preview for this file type
project0/project0.tex
View file @
4337240e
\documentclass
{
dreamClass
}
\usepackage
[normalem]
{
ulem
}
%\newcommand\CC{C\nolinebreak\hspace{-.05em}\raisebox{.4ex}{\relsize{-1}{\textbf{+}}}\nolinebreak\hspace{-.10em}\raisebox{.4ex}{\relsize{-1}{\textbf{+}}}}
\def\CC
{
{
C
\nolinebreak
[4]
\hspace
{
-.05em
}
\raisebox
{
.4ex
}{
\small\bf
++
}}
}
\title
{
\vspace
{
-50pt
}
\textbf
{
\Huge
Project0
}
\\
\textbf
{
\huge
《高级程序设计》课程项目说明
}
\\
\small
Version 1.
2
.0
\small
Version 1.
3
.0
}
\author
{
刘添翼
\thanks
{
\href
{
mailto:tyi.liu@outlook.com
}{
tyi.liu@outlook.com
}}}
...
...
@@ -22,14 +21,47 @@
\section
{
课程项目
}
课程项目,或者说project,是《高级程序设计》课程任务的一部分,将构成课程成绩的20
\%
。
\subsection
{
要求与原则
}
课程项目将会是一个有足够规模的,能行使一定功能的,体现出面向对象和泛型程序设计思想的,带有GUI(
\textbf
{
G
}
raphics
\textbf
{
U
}
ser
\textbf
{
I
}
nterface,图形界面)的,有趣的,
\CC
{}
程序。
课程项目将会是
\textbf
{
一个
}
有足够规模的,能行使一定功能的,体现出面向对象和泛型程序设计思想的,带有GUI(
\textbf
{
G
}
raphics
\textbf
{
U
}
ser
\textbf
{
I
}
nterface,图形界面)的,有趣的,
\CC
{}
程序。
\begin{note}
我们希望各位同学用一个学期的时间集中精力完成一个,而不是多个,无关的,项目。
因此,项目的每个阶段都会有新的规定动作。
一定程度上这对课程项目的整体架构做出了一定要求:设计不良的项目可能会为了完成每个阶段的必选任务而不得不多次重构。
\end{note}
课程项目应当是从第一行代码开始独立完成的。如有必要,可以使用任何由
\CC
{}
语言写成的函数库。助教将评估各位同学项目的有效工作量,因此鼓励各位同学复用函数库中已经提供的基础设施,并在此基础上,运用自己的智慧,实现自己觉得有趣的、有用的功能。
\begin{note}
我们事实上无法
\emph
{
阻止
}
各位同学直接复用别人的代码,不加改动或者做很少无关紧要的改动,而作为自己的课程项目。
但
\text
{
\color
{
red
}
\textbf
{
这是抄袭,我们将严肃处理。
}}
如果对学术规范的细节感到困惑,可以参考MIT
\footnote
{
\url
{
https://integrity.mit.edu/
}}
和ACM
\footnote
{
\url
{
https://www.acm.org/publications/policies/plagiarism-overview
}}
给出的说明。
\end{note}
\subsection
{
选题
}
这个学期的课程项目的具体内容已经发布。各位同学可以从以下两个题目中任选一个作为自己的项目并坚持完成:
\begin{enumerate}
\item
实现一个塔防游戏。
\item
实现一个文档预览器。
\end{enumerate}
如果想要选择其他自定义的项目,请参考这两个项目的文档,写一份自定义项目的文档提交给助教。在得到助教和老师的同意后,也可以按照该份文档给出的技术指标完成自己的项目。
课程项目应当是从第一行代码开始独立完成的。如有必要,可以使用任何由
\CC
{}
语言写成的函数库。当然,恰好能直接完成课程项目要求的或许不能用:我们希望各位同学自己动手,实现它们。
\subsection
{
日程安排
}
2021年秋季学期有17周,从2021年8月30日起到2021年12月26日止。考虑到前2周可以自由退补选课程,我们将从第3周开始正式安排项目。
2021年秋季学期有17周,从2021年8月30日起到2021年12月26日止。我们已经于2021年9月13日正式安排项目。
本学期的课程项目将分成三个阶段,每个阶段的最后期限分别设置在第6周、第11周和第16周结束时。
\begin{note}
由于一些历史原因,三个阶段的名字依然是project1、project2和project3。
但为避免造成理解上的混乱,在这个学期里可以等效地把它们理解成是phase1、phase2和phase3。
\end{note}
本学期的课程项目预计将分成三个阶段,每个阶段的最后期限分别设置在第6周、第11周和第16周结束时。
各位同学被期望在每个阶段完成一定的任务,通过分步走的方式,逐步完善自己的课程项目。
\begin{note}
由于各种原因,本学期的两个默认项目的project2和project3部分的详细文档还没有公布。
但是该部分中的规定动作大部分已经通过注记的方式给出提示,希望这样能够起到帮助各位同学合理设计项目架构的作用。
\end{note}
\subsection
{
验收与评分标准
}
助教将一对一验收每位同学的课程项目的每个阶段。因此,各位同学需要给出:
\begin{enumerate}
...
...
@@ -64,19 +96,35 @@
\item
是否有一个
\emph
{
好用的
}
(而不关心
\emph
{
好看的
}
)界面,
\item
是否实现了
\emph
{
有趣的
}
(而不关心
\emph
{
凑数的
}
)功能。
\end{itemize}
\subsection
{
内容
}
这个学期的课程项目的具体内容…很遗憾还没有确定下来。这里给出往年的一些题目作为参考:
\begin{itemize}
\item
实现一个从Markdown到HTML的编译器,并以此实现带预览功能的Markdown编辑器。
\item
模仿植物大战僵尸/坦克大战/…,实现一个自己的游戏。
\item
实现一个内存分配器,取代标准库提供的
\texttt
{
malloc()
}
和
\texttt
{
free()
}
,并引入更多的功能,例如内存安全检查和图形化的界面。
\item
\sout
{
实现一个
\textbf
{
高级
}
的学生信息管理系统。
}
\begin{itemize}
\item
虽然往年真的有这个选项,但请同学们放心,我们这个学期
\emph
{
一定
}
不会出这种一点也不有趣的项目的。
\end{itemize}
\end{itemize}
通常来说,每个学期会同时发布三个以上的项目,各位同学可以任意选择一个并坚持完成。如果想要选择其他自定义的项目,得到助教和老师的同意后也是可以的。
\subsection
{
打包与提交
}
课程项目的提交方式截至本文档发布时还没有确定。
目前暂定为向一个公开的,托管在
\url
{
https://git.nju.edu.cn
}
的git仓库提交pull request。
欲提交的文件的组织方式暂定如下:
\begin{minted}
{
text
}
201220000-赵志辉
├── bin
│ └── hello.out
├── doc
│ └── report.pdf
├── include
│ └── hello.hpp
├── lib
└── src
└── hello.cpp
\end{minted}
\begin{note}
git是重要的代码版本控制工具。每位同学非常都有必要学习如何使用。git的入门资料很多,比如
\url
{
https://git-scm.com/book/en/v2
}
。
\end{note}
或许我们会要求各位同学提供一份构建指南,指导如何编译自己的项目。
\begin{note}
直觉上说,既然是自己辛苦写出的软件,当然希望有更多用户来使用。不过这些用户可能使用不同的操作系统,使用不同的编译器,也可能没有安装软件运行所需要的库。如何指导这些用户在自己的电脑中编译课程项目,在某种程度上说是一件重要的事情。
\end{note}
\section
{
关于GUI
}
\subsection
{
一些传统
}
...
...
@@ -92,6 +140,17 @@
\end{description}
其中的每一个都有足够多的文档和示例程序,互联网上也有足够多的讨论内容,可供学习使用。
\begin{note}
根据我的经验,上面这些图形库(或者其他图形库)的使用方法并不在这门课的理论讲授范围之内。
换言之,各位同学需要自己找时间学习。
\end{note}
\begin{note}
学习一个函数库的正确姿势包括但不限于查阅官方的手册,阅读、运行和修改示例代码,在
\href
{
https://stackoverflow.com/
}{
Stack Overflow
}
上浏览相关的问题并亲自实践。
如果有条件,用正规的搜索引擎(百度
\textbf
{
显然
}
不是一个正规的搜索引擎)检索英文的关键词。
\end{note}
\subsection
{
图形库的安装
}
我们强烈建议,没有经验的同学在第一时间下载、安装这些库并且实际体验。安装过程可能会极端地痛苦和使人困惑,尤其是对于没有经验的同学来说。如果遇到这方面的问题,欢迎向助教寻求帮助。
...
...
@@ -104,6 +163,9 @@ macOS用户可以使用\href{https://brew.sh}{Homebrew}作为自己的包管理
对wxWidgets和Qt而言,在主流的操作系统下都有打包好的安装程序。
\subsection
{
更多的
\CC
{}
函数库
}
更多可能有用的
\CC
{}
函数库可以参考
\url
{
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-s096-introduction-to-c-and-c-january-iap-2013/final-project/
}
。
\section
{
关于开发环境
}
课程项目本身并不限定开发环境。但是《高级程序设计》的OJ的评分服务器运行Linux操作系统,使用gcc 4.9.2作为编译器套件,使用
\CC
{}
11作为
\CC
{}
语言的标准。这一点是无法更改的。
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment