On-line Information
All relevant information for the course is available at
http://www.cs.gettysburg.edu/~ilinkin/courses/Fall-2025/cs111/
Check this page at least twice a day, since this will be the only source of last-minute pertinent information.
General Description
CS111 is the first course in the sequence for Computer Science majors and offers an introduction to the fundamental principles of programming and software design. This course teaches how to think like a computer scientist, by teaching how to think about describing computational processes as a precise sequence of steps using a modern programming language. On a higher level the course teaches how to develop solutions to computational problems by building layers of abstraction through a process of decomposition that reduces complex problems into simpler and self-contained subproblems.
This course will use the Java programming language as the vehicle for exploration of fundamental computer science concepts. However, this is not a course about Java -- it is about the structure and interpretation of computer programs.
Alternative Courses
CS111 is the introductory course required for a major/minor in Computer Science while CS103 and CS107 are alternative courses designed for non-majors. This separation is reflected in the selection of topics and overall goals of each of these courses: CS103 and CS107 cover a wider range of topics but limit the depth of coverage; CS111 is more narrowly focused on programming fundamentals but explores these topics in greater depth.
If you are interested in pursuing Computer Science as a major/minor, then CS111 is the appropriate first course. If you would like to get a general overview of Computer Science, then the recommended courses are CS103 or CS107. To get the best Computer Science experience examine the reasons why you are taking the course and consider the alternatives. A mismatch between the goals of the course and student expectations, tends to lead to a perception that CS111 is difficult and results in less enjoyment of the course.
Course Outline
The course will cover the following topics (not necessarily in this order):
- program design
- testing and debugging
- variables, expressions, and statements
- functions and problem decomposition
- conditional execution
- iteration
- sequential structures
- searching and sorting algorithms
- recursion
- classes and objects
The above topics correspond roughly to Chapters 1-4, 6-8, 11-12 in Downey and Chapters 1-9, 18 in Liang (if time permits, we may cover sections from other chapters). Lecture notes will provide additional readings that supplement the presentation in the book, or introduce new topics. Visit daily the "Readings List" section of the class webpage as this will be updated frequently with the suggested readings.
Workload
You should be prepared to spend at least 2-3 hours outside of the classroom for each lecture hour. You should expect to spend significant amount of preparation for this course working on a computer to try out example programs and to develop the programming assignments.
You are encouraged to form study groups with colleagues from the class. The goal of these groups is to clarify and solidify your understanding of the material, and to provide for richer and more engaging learning experience.
However, you are expected to turn in your own code that represents the results of your own effort. See the policy outlined in the "Scholastic Conduct" and "Assignments" sections of the syllabus, or talk to the instructor, if you are unsure about the expected level of collaboration.
Keep in mind that the software required for this course is available only in the computer lab Glatfelter 112. Given the limited number of computers on campus that support the CS111 software it is strongly suggested that you install it on your personal computer but note that only Windows OS and Mac OS are supported (in particular, Chrome OS is not supported).
Attendance
Attendance is expected for each class period. Two late arrivals will count as one absence. If you are late, make sure to notify the instructor after class. Attendance, participation, and an apparent overall improvement trend may be considered in assigning a final grade.
Note that excessive absence will lead to a formal request to withdraw from the course. For more information see
Assignments and Exams
There will be several programming assignments during the semester. Each programming assignment will be evaluated based on a number of criteria including design, correctness, documentation, and testing. Note that a
correctly working program may not receive full credit, if it does not demonstrate good design or has poor documentation.
In general, you are free to discuss the assignments with others and brainstorm high-level ideas
but you must work out the details of the solution on your own and write your own code. You may consult on-line resources, as long as they contain only expository material; resources that contain solutions to the assigned (or very similar) problems, pseudocode, or code written in a programming language may not be consulted. If group work is allowed, this will be
mentioned explicitly in the guidelines of the particular assignment.
Here is a set of guidelines of practices that are not allowed while working on the assignments and exams. This is not an exhaustive list -- talk to the instructor if you are unsure about the allowed level of collaboration:
- sending solutions to someone else (electronically, on paper, screen
share, etc.); this is not allowed even if the intent is to share
the solution only for reference (you are bound by this even after the
course ends)
- asking someone else to share with you their solution; this includes
asking someone who took the course in a previous semester
- searching for assignment solutions on-line;
submitting solutions found on-line or someone else's solution
as your own work; using generative AI tools (ChatGPT, etc.)
- looking at someone else's monitor or letting others look at your monitor
in the lab, via screen share, etc
- submitting your own work from another course or from your previous attempt
of the same course; even if you have worked on a similar assignment in the
past, you should recreate your own solutions
- using electronic devices (mobile phones, smartwatches, calculators,
computers, headphones, etc.) during the exams; these devices should be
stored away during the exams
- note that each assignment is approximately 4% of the final grade;
incomplete work will likely receive some partial credit, and therefore, it
is not worth violating the above guidelines
- to support fairness, integrity, and consistency in assigning proper credit to submitted work, the instructor will be present in the classroom during the exams
Here are the relevant dates and how much each portion of your work will contribute to your final grade:
Programming Assignments |
Sep 4, Sep 11, Sep 18, Sep 25, Oct 2,
Oct 16 Oct 23, Oct 30, Nov 6, Nov 20, Dec 4 |
42% |
Fourth Hour |
due on Sunday |
3% |
Exam 1 |
evening of Wed/Thu, Oct 8/9, at 7:00-8:30pm |
17% |
Exam 2 |
evening of Wed/Thu, Nov 12/13, at 7:00-8:30pm |
17% |
Final Exam |
(all sections) TBD |
21% |
The exams will be closed-book, closed-notes, closed-neighbor, closed-calculator. The work you turn in on the exams must represent solely the results of your own individual effort.
Note the dates of the exams carefully --- make-ups will be given only under extreme circumstances provided that arrangements are made at least a week in advance.
Late assignments
Late assignments will incur a 1% penalty for each late hour (or fraction thereof) for a maximum of 7%. Assignments that are more than 1 day late will not be accepted.
This is intended to give some flexibility and is meant to be used when most of the assignment has been completed. Note that there is no course staff on duty on Friday and it will not be possible to get help, so ideally most of the major difficulties will have been discussed by Thursday.
Note that each assignment is approximately 4% of the final grade and incomplete work will likely receive some partial credit, so an individual assignment does not have significant negative impact.
Fourth Hour
This course meets the Fourth Hour requirement through a series of on-line quizzes administered via Moodle. The quizzes will be due on Sunday and will contain short exercises on the recently covered material or upcoming assignment.
Grading
Grading for this course is based on the scale below. For borderline cases attendance, participation, and apparent trend of improvement during the semester may be taken into consideration.
Your final grade will be at most one letter grade higher than the lower of your overall exam and overall homework scores. For example, if your overall exam score is D+, your final grade will be at most C+.
You are expected to receive the equivalent of at least a C- on the final exam in order to pass the class.
Incompletes
Incompletes (or make-up exams) will be considered only when a serious family or personal emergency arises and all but a small portion of the work has been completed. (Incompletes will not be given for reasons such as a heavy course load.) Arrangements for the incomplete, including obtaining all required documentation, should be made as soon as possible.
Note that excessive absence will lead to a formal request to withdraw from the course.
Special Accommodation
Students needing special accommodation are encouraged to contact the Center for Student Success as soon as possible so that all required documentation can be processed and all necessary arrangements can be made on time.
For more information on the support available at Gettysburg College see
Scholastic Conduct
Students at Gettysburg College are governed by the Honor Code. Failure to abide by the scholastic conduct expected on assignments or exams is a violation of the Honor Code tradition at Gettysburg College. It is your responsibility to read carefully the "Assignments" section of the syllabus which outlines the policy on assignments and exams. If you need help and are unsure about the expected level of collaboration, see the instructor for clarification and help with the assigned material.
For further general information on the Honor Code tradition at Gettysburg College see