summaryrefslogtreecommitdiff
path: root/index.html
blob: 5149e5e02dc1e6d948b9a6a78e03e2594524f04f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
<!DOCTYPE html>
<head>
<title></title>
<meta charset="utf-8"/>
<link rel="stylesheet" href="style.css"/>
<link rel="icon" type="image/png" href="img/fav/logo.png"/>
</head>
<body>
<div class="bannerholder">
	<img class="banner" src="img/banner.png"></img>
</div>
<div class="main">
<h>Urbana Electronics &amp; Programming Summer Program</h>
<p>When it comes to computers, it's almost required that you teach yourself
everything there is to know. This autodidacticism might work for some, but
becomes frustrating for preteens not used to it. On the other hand, in person
educational programs offered by schools are often aimed towards the lowest
common
denominator, oversimplifying things to the point where your child loses interest
in them.</p>
<h> For Course Notes scroll down</h>
<p>The Urban Computing and Electronics Summer Program aims to provide a
balance between this, offering practical and challenging course material, but
also providing in person tutoring for those who have little prior experience.
This two week program is tailored to your child's skill level and offers
topics ranging from High Level Programming, Low Level Programming,
Electronics, Web Design, Cyber Security, and UNIX system maintenance.</p>
<div class="img-holder">
<img src="img/elec.png" class="exampleimage">
<img src="img/mech.png" class="exampleimage">
<img src="img/c.png" class="exampleimage">
<img src="img/webandterm.png" class="exampleimage">
</div>
<h>About Me</h>
<p>
My name is Haoran S. Diao, I'm a self taught electronics and programming
hobbyist.

I have experience in:
</p>
<ul>
	<li>Electronics Software Drivers(kernel modules,microcontroller
code)</li>
	<li>Electronics Hardware Design(Custom PCB design etc...)</li>
	<li>Programming(C, C++, Golang, Java, HTML/Javascript/CSS, Python, Lua,
Bash
scripts)</li>
	<li>Linux System Maintenance(I have written my own kernel module)</li>
	Web Design(I have built http://themandelbots.com and
http://hairydiode.xyz and this site from scratch)
	<li>Image Processing and Graphics(OpenCV and OpenGL)</li>
	<li>Basic Computer Security(best practices, CTF challenges)</li>
	<li>Robotics (Head programmer at the Urbana Mandelbots FTC team)</li>
</ul>
<p>
I have been:
</p>
<ul>
	<li>Head Programmer at the Urbana Mandelbots Robotics Team</li>
	<li>Former Vice Present at a student run non-profit(Resigned)</li>
</ul>
<h>Course Details</h>
<h>---Required Course Materials</h>
<p>A dedicated laptop that Linux will be installed on, this can be any
obsolete laptop made after 2010. This does not have to be a very fast computer
at all. In most cases, previous data and OS will be wiped on installation of new
OS, but dualbooting(keeping both systems) can be done for certain computers. If
you can no provide a dedicated laptop then you can purchase a Raspberry Pi kit
for ~80 from me or online.</p>

<p>Optional Course Materials:</p>
<ul>
		<li>-2 USB drives 8GB minimum, this is to help with file
transfer and
		OS installation.</li>

		<li>-USB wifi dongle, same as above.</li>
</ul>
<p>These will only be required for certain projects, you are not required
to bring these if we do not end up exploring that topic.</p>
<ul>
		<li>3.b - An Arduino kit or PIC microcontroller w/
programmer.</li>
		
		<li>4.b Ti-8* series calculator</li>

		<li>7.c - USB wifi dongle</li>
</ul>
<h>---Course Outline:</h>
<ul>
	<li>1)Linux System Maintenance:
	<ul>
		<li>a - Using the Terminal</li>
		<li>b - Drive Partitioning and Installing a System from
Scratch</li>
		<li>c - Shell Scripting</li>
		<li>d - Compiling Custom Kernels</li>
	</ul>
	</li>
	<li>2)High Level Programming(farther away from hardware):</li>
	<ul>
		<li>a - Image Recognition Algorithms in Python with the OpenCV
library.</li>
		<li>c - Making Games with Pygame in Python.</li>
		<li>d - Making Minecraft Mods with Java.</li>
	</ul>
	<li>3)Low Level Programming(closer to hardware):</li>
	<ul>
		<li>a - Linux Kernel Modules using C</li>
		<li>b - Microcontroller Code using C</li>
		<li>c - Making Games with C++ using the OpenGL and SDL
Libraries.</li>
	</ul>
	<li>4)Just For Fun Programming:</li>
	<ul>
		<li>a - Coding in Minecraft with Lua</li>
		<li>b - Coding on a Ti-8* Calculator with TiBasic</li>
	</ul>
	<li>5)Electronnics Design and CAD:</li>
	<ul>
		<li>a - Designing Circuits and PCBs in Kicad or EagleCad</li>
		<li>b - Mechanical Drawing with LibreCAD</li>
	</ul>
	<li>6)Hands On Electronics</li>
	<ul>
		<li>a - Building Circuits with 74xx Series Logic ICs(Integrated
Ciruits)</li>
		<li>b - Building Custom Keyboards</li>
	</ul>
	<li>7)Basic Cybersecurity and Penetration Testing</li>
	<ul>
		<li>a - Personal Security Best Practices (Operational Security,
Network Secruity)</li>
		<li>a - PGP, SSL and Other Uses for Encruption.</li>
		<li>b - Applying Security Patches to Your System.</li>
		<li>c - Wireless Network Pentesting</li>
	</ul>
	<li>8) Static Web Design</li>
	<ul>
		<li>a - HTML/CSS</li>
		<li>b - Javascript</li>
		<li>c - Hosting your own website with github.io</li>
	</ul>
</ul>
<h>C expressions course notes</h>
<p>
Bitwise Operators: &amp, bitwise and; |, bitwise or; ~, bitwise not; ^, bitwise xor.
Bitwise operators apply logic operations in each position of a binary number,
return the resulting binary number.
</p>
<p>
Boolean Operators: &amp&amp, boolean and; ||, boolean or; !, boolean not.
Boolean operators apply logic on whether then entire number is true or false,
and returns true or false.
</p>
<p>
Comparisons: &gt, greater than; &lt, lesser than; &gt=, greater than or equals;
&lt=, lesser than or equals; ==, equals; !=, does not equal.
</p>
<p>AND: if both are true, then the output is true. OR: if one is true, then the
output is true. XOR: if one is true and the other false, then the output is
true, otherwise it is false. NOT: if true, false; if false, true.</p>
</div>
</body>
<!-- 
if you're digging in the src you might be interested in how this site works here: https://hairydiode.xyz/meta.html 
-->