COURSE DESCRIPTION | Fall 2025 | CSCI-E26 |
as of: |
If you have not written complicated programs that use these ideas in some language, you will be overtaxed by the course.
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:
|
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
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:
|
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 |
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.
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.