1 |
On 12/17/2012 01:11 PM, Maxim Kammerer wrote: |
2 |
> On Mon, Dec 17, 2012 at 5:32 PM, Anthony G. Basile<blueness@g.o> wrote: |
3 |
>> Please comment. If it gets systematized enough, it can be a guide to future |
4 |
>> devs too. |
5 |
> Hi, what is the level of the students, what are the prerequisites |
6 |
> (i.e., have they already seen some systems programming using C?), and |
7 |
> how many weekly hours? Have you already designed some assignments? I |
8 |
> can think of the following: |
9 |
> |
10 |
> 1. Create a small makefile-based project with a separate shared |
11 |
> library, an executable, and a man page. Determine run-time and |
12 |
> build-time dependencies. Then convert to autotools, update |
13 |
> dependencies. Do it all on GitHub, with a separate branch for |
14 |
> converting to autotools. |
15 |
|
16 |
Its a second year course so they've had some programming in Java but no |
17 |
serious C. It meets 3 hours a week but I expect about 6 hours more per |
18 |
week in assignments. |
19 |
|
20 |
There is some overlap with other stuff I've taught: Makefiles, |
21 |
autotools, git and shared objects. I did my lecture materials in git |
22 |
and then ran a git rebase -i in class and redid the commits showing them |
23 |
what happened on each point. You can see some of that stuff here -> |
24 |
|
25 |
practice with git -> |
26 |
http://tweedledum.dyc.edu/gitweb/?p=model-git.git;a=summary |
27 |
|
28 |
how autotools works -> |
29 |
http://tweedledum.dyc.edu/gitweb/?p=autotools.git;a=summary |
30 |
|
31 |
how Makefiles work -> |
32 |
http://tweedledum.dyc.edu/gitweb/?p=makefile.git;a=summary |
33 |
|
34 |
how shared objects work -> |
35 |
http://tweedledum.dyc.edu/gitweb/?p=shared-objects.git;a=summary |
36 |
|
37 |
> |
38 |
> 2. Write an ebuild for the project above, maintained in an overlay |
39 |
> (also on GitHub), with sources fetched from GitHub. Add some small |
40 |
> patch to configure.ac in the ebuild. Add USE flags. Add "make check" |
41 |
> support to the build system, test with FEATURES=test. Many |
42 |
> ebuild-related tasks can be easily added (e.g. installing init.d |
43 |
> scripts). |
44 |
|
45 |
This would be totally new to them but I agree that's a good idea. I |
46 |
don't know about GitHub. Can you delete projects from it when you're |
47 |
done because I don't want to polute GitHub with lots of unpolished stuff. |
48 |
|
49 |
> |
50 |
> 3. Take an old-version ebuild for a project with a known bug, fetch |
51 |
> the relevant git tag, and bisect to find the bug. Prepare a patch, |
52 |
> describe patch submission process. |
53 |
Hmm ... I didn't think of this but I could do that with the kernel on |
54 |
virtual machines. |
55 |
|
56 |
> |
57 |
> Wrt. subjects covered, will you cover sandboxing, installing to image |
58 |
> vs. merging to live system, etc.? I would expect students to like such |
59 |
> stuff. |
60 |
> |
61 |
At some point I would have to cover that. Like when I got over the |
62 |
phases of emerging, stepping through them with ebuild. |
63 |
|
64 |
-- |
65 |
Anthony G. Basile, Ph.D. |
66 |
Gentoo Linux Developer [Hardened] |
67 |
E-Mail : blueness@g.o |
68 |
GnuPG FP : 8040 5A4D 8709 21B1 1A88 33CE 979C AF40 D045 5535 |
69 |
GnuPG ID : D0455535 |