.sp 0.5i
.tl '\s-2COURSE DESCRIPTION\s0'Fall 2020'\s-2CSCI-E26\s0'
.sp -6p
\l'6.5i'
.sp 8p
.na
.ps 9
.vs 0.152i
.hy 14
\fBWhat is CSCI-E26?\fP
.sp 6p
CSCI-E26 is a course in C and Unix/Linux programming with a focus on 
using C and Unix/Linux to create interactive pages for the 
World Wide Web.  The course covers
in detail almost of the the C language, introduces the major tools
and ideas of Unix programming, and shows how to use HTML forms to
connect to remote databases and services.

\fBWho is prepared for it?\fP
.sp 6p
We assume you know how to write computer programs.  In particular,
we assume you have written programs in a structured language,
that you know about editors, understand the ideas of variables,
loops, arrays, functions, and some data structures.  
If you have not written
complicated programs that use these ideas in some language, you
will be overtaxed by the course.

\fBAdministative Details\fP
.sp 6p
.TS
lI lw(5.25i).
Lectures	T{
.na
.hy 14
Wednesdays, 7:40-9:40, using Zoom.  short break.  Covers ideas, sample
programs.  Be prepared to take notes. All sample programs
used in class will be stored on line, so you can retrieve
them and examine and/or print them later.
T}
Homework	T{
.na
.hy 14
Several assignments, due on Saturday evenings at midnight.
See course outline.  Must hand in listing and sample run.
Must run on the course machine: cscie26.dce.harvard.edu.  
Can be developed on any machine.
.sp 3p
T}
Exams	T{
.na
.hy 14
One midterm, one final.
.sp 3p
T}
Grading	T{
.na
.hy 14
Homework 42%, Participation 8%, Midterm 20%, Final 30%
.sp 3p
T}
Sections	T{
.na
.hy 14
One hour each week at time to be determined.
.sp 3p
T}
Office Hours	T{
.na
.hy 14
Online with Zoom, times to be arranged
.sp 3p
T}
Piazza	T{
.na
.hy 14
We use Piazza for class discussion and
to send questions to teaching staff.   Sign up at
piazza.com/extension.harvard/fall2020/cscie26 .
access code = (see lecture)
Visit at piazza.com/extension.harvard/fall2020/cscie26/home
.sp 3p
T}
Info Sheets	T{
.na
.hy 14
Need name, address, programming experience, and section requests.
Complete the online form.
.sp 3p
T}
Texts	T{
.na
.hy 14
The required texts are \fIC Programming, A Modern
Approach\fP by King (1st or 2nd edition), 
\fIYour Unix: The Ultimate Guide, 2nd ed or 3rd ed.\fP
by Das.  
.br
The Coop has them.  Online book sellers have them.
They are for reference and additional examples.
The suggested reading does not exactly follow lecture, but
is pretty close.  The \fIC Programming\fP book explains the
language, the Unix book explains how to use Unix.
.sp 3p
T}
Facilities	T{
.na
.hy 14
The course machine is cscie26.dce.harvard.edu.  Connect using ssh.
You need to set up an account on the machine.
.sp 3p
T}
Accounts	T{
.na
.hy 14
Set up your computer account by going to the website:  
https://ac-web.dce.harvard.edu/ .
You need a \fIHarvard Key\fP to set up your account.
.br
Claim your \fIHarvard Key\fP at https://key.harvard.edu/ .
For details about claiming your key, 
.br
visit:
http://www.extension.harvard.edu/resources-policies/resources/computer-e-mail-services
.sp 3p
T}
Web Site	T{
.na
.hy 14
http://cscie26.dce.harvard.edu/~lib113/
.sp 3p
T}
Accessibility	T{
The Extension School is committed to providing an 
accessible academic community. The Accessibility Office 
offers a variety of accommodations and services to students 
with documented disabilities. Please visit 
www.extension.harvard.edu/resources-policies/resources/disability-services-accessibility
for more information.
.sp 3p
T}
T{
Academic
.br
Integrity
T}	T{
You are responsible for understanding Harvard Extension 
School policies on academic integrity 
(www.extension.harvard.edu/resources-policies/student-conduct/academic-integrity) 
and how to use sources responsibly. 
Not knowing the rules, misunderstanding the rules, running 
out of time, submitting the wrong draft, or being 
overwhelmed with multiple demands are not acceptable 
excuses. There are no excuses for failure to uphold 
academic integrity. To support your learning about academic 
citation rules, please visit the Harvard Extension School 
Tips to Avoid Plagiarism 
(www.extension.harvard.edu/resources-policies/resources/tips-avoid-plagiarism) ,
where you'll find links to the Harvard 
Guide to Using Sources and two free online 15-minute 
tutorials to test your knowledge of academic citation 
policy. The tutorials are anonymous open-learning tools.
.sp 3p
T}
T{
Attendance/
.br
Participation
T}	T{
Students are encouraged to attend class during the live presentation and to
participate by asking and answering questions.  
Participation counts for 8% of the grade.  People who cannot 
attend class may participate on the Piazza discussion site.
.sp 3p
T}
Credit/Work	T{
Students enrolled for graduate credit may be assigned additional work.
.sp 3p
T}
.TE
.sp |10.2i
.tl '''Modified 2020-08-05 14:02'
.bp
.sp 0.8i
.tl '\s-2COURSE DESCRIPTION\s0'Page 2'\s-2CSCI-E26\s0'
.sp 0.5i
\fBWhat is the Point of this Course?\fP
.sp 6p
This is a course in Unix/Linux programming.  Unix is an operating system,
but it is more than just a control program for computers; it is
a complete programming environment based on the idea of software
tools.
The Unix programming model is one of building
complex, powerful solutions by combining simple, special-purpose tools.
These tools are data manipulation programs.
Every Unix system comes with a wealth of these tools.  Tools are 
usually written in C.  Combinations of tools are often written 
in a scripting language, such as the Unix shell, \fIsh\fP .

Unix programming, then, consists of \fB(a)\fP
designing and writing tools in C and \fB(b)\fP
combining them using sh.
Csci-e26 teaches C programming and sh programming.

Where does CGI fit into this?  To make your nifty combination of
tools available from web pages, you need to learn how to connect web
pages to Unix programs.  The \fICommon Gateway Interface\fP is the
method web pages use to transfer data from web page to a server and back.
By learning this third skill, you will be able to construct Unix tools,
combine them into Unix programs, and use web pages for user input and
output.

Each of these three skills is useful on its own.  C is a great
language; its syntax is the basis of C++, JavaScript, Perl, awk, Java.
Unix is written in C as are most of the software tools.
Shell scripting is an essential skill for Unix administration and
for power users.
CGI programming may be done in any language, not just C/Unix.  The
principles we cover apply to any network and programming platform.
