COURSE DESCRIPTION Fall 2025 CSCI-E26
as of:

What is this course?

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.

Who is prepared for it?

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. We expect you to have taken a course in data structures that include using linked lists. Ideal preparation is knowledge at the level of CSCI-E22.

If you have not written complicated programs that use these ideas in some language, you will be overtaxed by the course.

Administative Details

Lectures Wednesdays, 7:40-9:40 PM ET, online 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. Classes will be recorded and available for viewing later
Homework Several assignments, due on Sunday evenings at midnight. See course outline. Must hand in complete source code and sample run. Your program must compile and run on the course machine: cscie26.dce.harvard.edu . Can be developed on any machine. For details about the homework, see the Assignments page on the course web site
Exams One midterm, one final.
Grading Homework 45%, Participation 5%, Midterm 20%, Final 30%
Sections One hour each week at a time to be determined.
Office Hours/
Workshops
Online with Zoom at times to be arranged
Questions/
Discussion
Ask and discuss on the Ed Discussion page on Canvas.
Info Sheets Need name, address, programming experience, and section requests. Complete the online form.
Help CSCI-E26 provides several forms of support to help you learn the material and succeed with the projects:
  • Students are encouraged to ask questions in class
  • I call on students in class
  • Weekly sections discuss main ideas and homework strategies
  • Weekend workshops (with Zoom) provide hours of time to discuss ideas, meet with students, work with company
  • Ed Discussion forum for posting questions to the class or directly to teaching staff
  • One-on-one meetings by request
  • After class zoom discussions
Texts The required texts are C Programming, A Modern Approach by King (1st or 2nd edition), Your Unix: The Ultimate Guide, 2nd or 3rd ed. by Das.
The Harvard 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 C Programming book explains the language, the Unix book explains how to use Unix.
Facilities The course machine is cscie26.dce.harvard.edu. Connect using ssh over the Harvard VPN. Detailed instructions for the VPN can be found here: https://harvard.service-now.com/ithelp?id=kb_article&sys_id=f90a73f6dba21c5c60c0d9fcd39619ea
Accounts You will have an account on the E26 server. Your username on the E26 server is your Harvard NetID. You can find your NetID at https://key.harvard.edu/manage-account.
Accounts will be available one week before classes start.
You need a Harvard key to set up your computer account. Claim your Harvard Key at https://key.harvard.edu/
For information, visit: https://extension.harvard.edu/academics/types-of-courses/
Web Site http://cscie26.dce.harvard.edu/~dce-lib113/
Accessibility he Division of Continuing Education (DCE) is committed to providing an accessible academic community. The Accessibility Services Office (ASO) is responsible for providing accommodations to students with disabilities. Students must request accommodations or adjustments through the ASO. Instructors cannot grant accommodation requests without prior ASO approval. It is imperative to be in touch with the ASO as soon as possible to avoid delays in the provision of accommodation. DCE takes student privacy seriously. Any medical documentation should be provided directly to the ASO if a substantial accommodation is required. If you miss class due to a short-term illness, notify your instructor and/or TA but do not include a doctor's note. Course staff will not request, accept, or review doctor's notes or other medical documentation. For more information, email accessibility@extension.harvard.edu.
Academic Integrity/
Plagiarism
If you do not know how to start a project, feel overwhelmed, need help with some bugs, we offer a lot of support. There is no need to compromise academic integrity.

You are responsible for understanding Harvard Extension School policies on academic integrity and how to use sources responsibly. Violations of academic integrity are taken very seriously.

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.

Review important information on academic integrity and student responsibilities here: https://extension.harvard.edu/for-students/student-policies-conduct/academic-integrity ; for more on academic citation rules, visit Using Sources Effectively and Responsibly (https://extension.harvard.edu/for-students/support-and-services/using-sources-effectively-and-responsibly) and review the Harvard Guide to Using Sources ( https://usingsources.fas.harvard.edu).

Details for Academic Conduct
Unless otherwise stated, all work submitted as part of this course is expected t o be your own.

You may discuss the main ideas of a given assignment with other students (provid ed that you acknowledge doing so in your solution), but you must write the actua l solutions by yourself. This includes both programming assignments and other ty pes of problems that we may assign.

Prohibited behaviors include:

  • Copying all or part of another person's work, even if you subsequently mo dify it
  • Viewing all or part of another student's work
  • Showing all or part of your work to another student
  • Consulting solutions from past semesters, or those found in books or on the Web
If we believe that a student is guilty of academic dishonesty, we will refer the matter to the appropriate administrative committee. Penalties for this type of behavior are typically severe.
Generative/
AI
Course Goals: CSCI-E26 is a programming course using C and Unix. The goals of the course are to help you learn about the C programming language, how to use Unix/Linux tools and scripts, and also to improve your programming and design skills. In the same way that using Google Translate to do assignments for a course in French language and culture prevents students from actually learning French language and culture, using Chat-GPT or other generative AI system to produce C programs and shell scripts, design algorithms, select and use data structures, and solve problems prevents you from becoming fluent in C and sh and learning how to design algorithms, select and use data structures, and solve problems.

In order to achieve these goals, we expect students to practice syntax, algorithm design, and problem solving. We expect that all work students submit for this course will be their own. We specifically forbid the use of ChatGPT or any other generative artificial intelligence (AI) tools at all stages of the work process, including preliminary ones. Violations of this policy will be considered academic misconduct. We draw your attention to the fact that different classes at Harvard could implement different AI policies, and it is the responsibility of CSCI-E26 students to follow CSCI-E26 course policy.

Course/
Materials
Publishing or Distributing Course Materials: Students may not post, publish, sell, or otherwise publicly distribute course materials without the written permission of the course instructor. Such materials include, but are not limited to, the following: lecture notes, lecture slides, video, or audio recordings, assignments, problem sets, examinations, other students' work, and answer keys. Students who sell, post, publish, or distribute course materials without written permission, whether for the purposes of soliciting answers or otherwise, may be subject to disciplinary action, up to and including requirement to withdraw. Further, students may not make video or audio recordings of class sessions for their own use without written permission of the instructor.
Attendance/
Participation
Students are encouraged to attend class during the live presentation and to participate by asking and answering questions. Participation counts for 5% of the grade and also includes participation in online sections and office hours. Students who cannot attend class may participate in section, office hours, and on the discussion site.
Credit/
Work
Graduate-credit students will submit additional design/planning documentation for class projects

Is This Course Useful for Linux, too?

For the ideas and skills taught in CSCI-E26, Unix and Linux are the same. Any examples in class or in the text will work the same way under Unix or Linux.

Course Goals / Learning Outcomes

The goals of CSCI-E26 are to teach students to write programs of medium complexity in the C programming language and the Unix shell and also to use HTML forms and HTTP to make those programs available on the Internet. A second goal is to improve program design skills.

This is a course in Unix/Linux programming. Unix is an operating system, but Unix 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, sh .

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

Where do web interfaces fit into this? To make your combination of tools available from web pages, you need to learn how to connect web pages to Unix programs. HTML forms and HTTP are the basic methods 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. Understanding C helps you understand fundamentals of how computers work including memory management and data representation. Unix is written in C as is Python and most of the software tools. Shell scripting is an essential skill for Unix administration and for power users. Web forms and HTTP programming may be done in any language, not just C/Unix. The principles we cover apply to any network and programming platform. These principles are the basis of all web-based applications.