码云主要提供了源代码管理(Git/SVN)功能,最近又推出了高校版让普通老师也能利用起来以供教学使用。
学生与老师不仅能利用其管理代码,更重要的是我们的程序教学能通过对git的使用来引入业界流行的软件开放方式。
经过摸索,大概有几个可以利用的场景。

1.学生代码管理

以前学生在实验室编写好代码带回宿舍,通常使用U盘拷贝或者QQ邮箱的方式。麻烦不说,最关键的是不够专业!。作为计算机专业的学生应该对这种不专业的行为,果断说不。
可以使用码云提供的git服务来管理我们的代码。git最常用的当然是命令行版本,当然对初学者来说还是有一定的难度(很多同学连dircd命令都不知道)。我们一开始作为过渡,可以先使用网页版。

1.1 最简单的入门(创建项目)

步骤很简单,只需3步:

  1. 申请账号。
  2. 新建项目。注意:选择正确类型,比如管理Java项目,尽量选择Java的模板。
  3. 在项目中直接新建、上传、删除文件、文件夹。

进入项目后的大概界面如下:

先熟悉如下功能。
代码:你的代码都在这里。可以在这里上传、删除、修改代码。
Issues:别人可以对你的代码提出问题,当然也可以当做论坛来用。
管理:可以删除项目、基本项目设置、项目成员管理(可以把你的团队成员加进来一同编写代码)。

然而这样建立的项目是学生自己的项目,不方便老师查看代码。我们可以利用码云上Git的Fork + Pull 模式 来实现教师对学生代码的统一管理。

1.2 使用 Fork + Pull 模式构建统一的学生代码仓库

使用这种模式管理学生代码可以让学生在提交代码的过程中学习到业界最流行的分布式开发技术。具体步骤如下:

  1. 教师新建一个代码库项目,如上图所示。代码库可以是空的项目,然后将项目地址发给学生。
  2. 学生点击右上角的Forked,将教师的代码库Fork到自己的账号下。
  3. 学生在该项目下建立自己学号命名的目录,然后将代码放入该目录。
  4. 学生点击该项目的Pull Requests,然后点击+新建 Pull Request。提出请求,将自己的代码合并到老师建立的代码库项目中。
  5. 教师端点击Pull Request,可以查看学生提交的Pull Request。然后根据需要决定是否接受该学生的合并请求。主项目截图如下。

可以看到学生的代码都被放到主项目中,教师需要的时候可以查看每个学生的提交情况。

这种模式有几个特点要注意:

  1. 合并到主项目的所有代码都可以被项目成员看到。所以要小心学生作业代码泄露问题。我利用这个功能主要是为了让学生学会使用git、熟悉Fork + Pull模式,至于抄袭问题我会使用别的工具来解决。当然也期望码云会推出相关功能。[2018/09/20更新],码云现在已经增加了相关功能解决了该问题,见这篇参考文章开启 Pull Requests 显示权限
  2. 如果一个班级的人数太多,让每个学生发起Pull Request,老师一一审核。那无疑对老师发起了DDOS pull request共计。老师一个一个确认到手段。对于这个问题,教师可以将审核任务委派给班级的学习委员。这个功能具体操作可以参见官方文章:码云上线 Pull Requests 多人代码审核功能

相关参考文章:
Fork + Pull 模式

1.3 使用Git命令模式或者IDE管理源代码

可以参考如下文章:
官方帮助-提交第一行代码
我的其他原创文章:
Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(1)
Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(2)
使用Eclipse Egit与码云管理你的代码
IntelliJ IDEA下Git的配置与使用(命令行下)

2.教师项目模板与项目代码质量检查

2.1 教师项目模板

老师布置程序项目类作业的时候,即使再三强调要按照规范来建立项目目录结构。然而最终提交结果依然不尽如人意。每个人似乎都有自己的一套项目结构,并且这个结构通常是惨不忍睹的,比如一包流,所有代码均放到一个包中。
教师完全可以规划好一个项目的标准目录结构,然后让学生Fork或clone下来,这样就无痛的规范了所有学生的项目目录结构。实际上这也是业界流行的一种方式。学生可以参考我的这个专门用于Java教学的一个项目OnlineShop,该项目包含一个可供参考的标准项目目录结构。

2.2 项目代码质量检查(校园版不开放)

学生的代码即使按照目录规范要求提交上来,但是很多时候代码质量惨不忍睹。比如变量命名、对null的处理。让老师一一检查,这可是要了老师的命。码云项目中提供了项目代码质量检查,让学生交给老师审查之前先自查一下。如下图所示:

注:上述代码质量检查现进供企业版用户使用。

推荐直接在IDE中使用阿里巴巴代码规范扫描插件对项目代码进行扫描。

3.真正的让团队合作开发实施起来

传统的程序项目作业,名义上是小组合作完成,然而,实际上由于缺乏工具的支持,很难真正的实现分布式开发。到最后甚至演变成,1拖n(1个组长搞定全部)的现象。
通过码云的Git服务可以真正让分布式开发真正实现,教师可以通过观察项目的提交记录,来确认每个人的是否真正完成了自己的任务。一个课程设计作业提交记录如下图:

老师可以大概判断一下该项目是否真正的实现了分布式开发,开发的工作进度是如何的。

其他几点期望

在教学方面还希望码云能提供如下几个功能:

  1. 代码抄袭判定。
  2. 通过提交记录来判定学生项目推进情况的工具。
  3. 更完善的学生提交数据。比如学生每周提交数、代码行数。不仅是每个学生,而且要有所有学生的总体情况。最好以图形化的方式展示。

其他参考资料

Gitee高校版实训教程

在码云(gitee)上展开程序类课程教学的更多相关文章

  1. 码云Gitee上新建项目教程

    1.在浏览器访问,https://gitee.com/: 2.使用用户名.密码登录: 3.在左下角显示当前用户的项目,点击“+”号,创建项目: 4.填写项目的相关信息,项目名称要和本地要上传的项目名称 ...

  2. 怎么将本地项目放到码云(gitee)上面?图文详解

    git的好处什么的,在此就不多赘述.现在很多公司都在用git了. 那么怎么将本地已经有的项目放到码云(gitee)上呢? 前置条件说明: 1:原来项目所在位置:D:\workspace01\class ...

  3. 码云 Gitee 云端软件平台学习--GitHub

    码云 Gitee http://git.oschina.net/jackjiang/MobileIMSDK http://www.blogjava.net/jb2011/archive/2018/11 ...

  4. GitHub和码云gitee及远程仓库管理

    目录 备注: 知识点 GitHub 码云(gitee.com) gitee的使用 本地版本库关联多个远程库 备注: 本文参考于廖雪峰老师的博客Git教程.依照其博客进行学习和记录,感谢其无私分享,也欢 ...

  5. idea 码云 项目上传

    1.点击导航栏 VCS -> Import into Version Control -> 托管项目到码云 2.输入码云帐号密码,点击login. 3.勾选private,点击托管按钮. ...

  6. Git同步更新操作GitHub和码云仓库上面的代码

    一.前言 问题: 小编在生活中,一般都是将代码保存到github上,但由于国内的码云仓库确实速度比github快很多,用起来也很方便,于是后来就慢慢转码云了,当然小编在github上的代码也不想放弃更 ...

  7. git本地项目上传至码云gitee

    如果你的本机是安装成功第一次使用,先配置一下一些基本的信息 $ git config--global user.name "Your Name" $ git config --gl ...

  8. 上传本地项目到码云(gitee)

    1.码云上创建一个项目比如zhirong 2.本地创建一个文件夹F:\workspace\zhirong-items,进入zhirong-items打开git bash 3.执行git init ,这 ...

  9. 手把手教你IDEA连接码云(Gitee)

    目录 前言 一.下载.安装git 1.打开git官网,选择你的操作系统 2.根据你的系统位数选择相应的版本下载 3.安装 4.配置全局的用户名.邮箱 5.在idea中配置git目录 二.配置Gitee ...

随机推荐

  1. 将python文件打包成exe可运行文件

    https://blog.csdn.net/douzhenwen/article/details/78886244

  2. c#devexpress 窗体控件dock的重要

    在设计c# devexpress winform 窗体时, 要建立起dock意识, dock就是子窗体如何靠在父窗体上, 有fill 全覆盖, buttom 底部,top 上部... 如下图 pane ...

  3. MyEclipse 编译错误 web项目中的 js,jsp报错 更改

    搜索   validation   语法检测 必须 选定一个  不然不编译

  4. css -html-文档流

    首先先考虑一下什么是普通流?普通流就是正常的文档流,在HTML里面的写法就是从上到下,从左到右的排版布局. 例: <div id="01"></div>&l ...

  5. HihoCoder - 1103 Colorful Lecture Note

    Little Hi is writing an algorithm lecture note for Little Ho. To make the note more comprehensible, ...

  6. Connection failed Flowsocketconnector Failed to connect to target addressWindows error10061:由于目标计算机积极拒绝,无法连接

    使用bitbise时报上面错误   : 解决方法 :卸载软件并删除相关的文件 (包含bitvise 及注册表中的文件)重新安装后能连接

  7. Codeforces 1086D Rock-Paper-Scissors Champion

    Description \(N\) 个人排成一排, 每个人都事先决定出剪刀.石头.布. 每次可以任意选两个相邻的人进行决斗. 规则和游戏一样. 但是如果平局, 则掷硬币来决定胜负. 输的人下场. 现要 ...

  8. Render Functions & JSX

    Render Functions & JSX Basics Vue recommends using templates to build your HTML in the vast majo ...

  9. 第二阶段第十次spring会议

    昨天我对宠物信息进行了添加和调整. 今天我将继续对宠物信息添加保存按钮. private void button2_Click(object sender, EventArgs e) { Settin ...

  10. asp.net core部署到iis中出现 HTTP Error 502.5 - Process Failure的问题

    环境是windows Server2012  问题的原因是缺少文件:api-ms-win-crt-runtimel1-1-0.dll, dotnet 启动程序失败. 解决方案1: 安装系统补丁: 20 ...