0% found this document useful (0 votes)
62 views5 pages

CPSC S112

This document provides information about the CPSC 112: Introduction to Programming course offered in the summer of 2023. The course is an introductory programming course that uses the Java programming language. By the end of the course, students will learn how to write Java programs and focus on programming concepts like data types, control structures, object-oriented programming, and basic libraries. The course consists of lectures, discussion sections, and 9 programming assignments that make up 90% of the final grade. No textbook is required but recommended resources are provided. The academic honesty policy prohibits copying work or solutions to maintain individual responsibility for assignments.

Uploaded by

Jonas Rocha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
62 views5 pages

CPSC S112

This document provides information about the CPSC 112: Introduction to Programming course offered in the summer of 2023. The course is an introductory programming course that uses the Java programming language. By the end of the course, students will learn how to write Java programs and focus on programming concepts like data types, control structures, object-oriented programming, and basic libraries. The course consists of lectures, discussion sections, and 9 programming assignments that make up 90% of the final grade. No textbook is required but recommended resources are provided. The academic honesty policy prohibits copying work or solutions to maintain individual responsibility for assignments.

Uploaded by

Jonas Rocha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

CPSC 112: Introduction to Programming

Summer, 2023

Course Description
CS112 is an introductory programming course, using the Java programming language.
There is no prerequisite for the course -- in particular, no prior programming experience
is required -- although it helps to be "computer literate."
By the end of the course, you should be able to write useful Java programs, but the
focus of the course is programming concepts. Besides learning how to write cool
programs you will focus on learning data types (arrays, strings, numbers, lists, queues,
stacks, etc.), control structures (conditionals, loops, exception handling, recursion, etc.),
program analysis (assertions, etc), basic algorithms (sorting, searching, etc.), object-
oriented programming (classes, methods, objects, inheritance, polymorphism, interface,
etc.), and basic libraries (graphics, digital audio, text processing, etc.).

Course Format
This course has three mandatory 2:15 hour lectures and an optional discussion section
each week. The lectures present the majority of the course content, while discussions
reinforce the concepts. The discussion sections will present exercises and examples
useful for the problem sets.

Required Course Materials


All software used in the course is free. This course will not require any textbook, but we
recommend the following book if you would like to follow along with the text.

• Stuart Reges and Marty Stepp. Building Java Programs: A Back to Basics
Approach.
URL: http://www.buildingjavaprograms.com.

An additional online book from which we will draw examples and exercises:

• Robert Sedgewick and Kevin Wayne. Introduction to Programming in Java: An


Interdisciplinary Approach.
URL: http://introcs.cs.princeton.edu/java/home/
Assessments and Grading
This course will have 9 Java programming assignments.
Grade breakdown (subject to change):
90% programming assignments
10% attendance/participation

Late Submission Policy


To allow for the exigencies of computer failures and personal crises, each student
has 5 discretionary late days for homework assignments, but any one assignment may
only be up to 2 days late so that we can discuss solutions, return grades in a timely
fashion, and move on to the next assignment. These late days can be used for any
reason and there is no need to get a Dean's excuse or special permission to use them.
If all 5 late days have been used up, then assignments may still be submitted up to 1 days
late, but they will incur a 10% late penalty per day (5 minutes after the deadline is still
considered 1 day late).

Academic Honesty Policy


The programming assignments in this course are intended to give you practice at
working through problems independently. Therefore, unless otherwise specified, the
homework assignments are your individual responsibility and are not group assignments.
Plagiarism is a violation of University rules and will not be tolerated. You must neither
copy work from others (at Yale or elsewhere) nor allow your own work to be copied. In
addition to grade penalties, additional consequencesLinks to an external site. for
breaking this policy may be imposed by the Yale College Executive Committee. Note
that Gradescope will automatically check your submissions for code similarity with your
peers and past submissions to similar assignments.
You may:

• Ask others or search online for help with general issues with programming
languages, APIs, IDEs, tools, and high-level course concepts that are not
specific to the assignment.
• Ask clarifying questions about the requirements of an assignment to TAs or on
the course discussion board.
• Discuss more specific issues on an assignment with a TA or instructor.
You may not:

• Discuss your individual solution with your peers.


• Receive a printed or electronic copy of anyone else's work for the course from
this term or any other term. This includes asking or paying someone else to
complete the assignment for you.
• Give anyone else a printed or electronic copy of your work for the course for
this term or any other term. This includes posting your work publicly on sites
such as Github.
• Seek out solutions to similar assignments online.

If you have any questions about this policy or are unsure if you may have crossed a line,
discuss it with the instructor as soon as possible.

Syllabus
The following is a tentative (subject to change) schedule of lecture content and
assignemnts.

Lecture Content Assignment release/due

Week 1 Introduction & Java structure Pset1, Pset2 releases

Static methods, Data Types

Loops and Method Parameters Pset1, Pset2 due

Week 2 Java Graphics and Animations Pset3, Pset4 releases

Text I/O, Loops, Conditionals

Strings and Arrays Pset3, PSet4 due

Week 3 Arrays, Indefinite Loops Pset5, Pset6 releases

Loop Analysis, Array Algorithms, References

Audio and Classes Pset5, Pset6 due

Week 4 Classes and OOP Design, Encapsulation Pset7, Pset8 releases

Inheritance, Overriding, Polymorphism

Collections Pset7, Pset8 due


Week 5 Sorting and Searching Pset9 released

GUI Framework

Additional Topics Pset9 due

Here is a more detailed breakdown of what we will learn in the lecture:

1. Introduction
o Introduction
o Java program structure
2. Elements of Programming
o Static methods and method decomposition (Top-down design,
bottom-up implementation)
o Data types; Primitive data types; Operators and expressions; Data
type conversions; Assignment operators
o Basic for loops; Loops and coding style; Variable scoping; Nested
loops; ASCII figures as loop examples
o Parameterized methods
o Java graphics; Examples of parameterized drawings and loops;
Animations
o Methods with returns; Summary of static method definition and
invocation
o Text I/O: Input using Scanner; Exception handling; File
input/output; Text output using printf/format
3. Basic Program Flow of Control and Basic Arrays
o Logical conditions (Boolean expressions); Boolean type
o Nested if/else
o Conditional shortcuts (switch, conditional operators)
o Strings processing with conditional
o String as an array of chars; Text encryption/decryption
o Array of Strings; Using array as counters (histogram)
4. Indefinite Loops using while, do/while
5. General Program Flow of Control: Indefinite Loops
1. Program analysis; Loop pattern: sentinel input/fencepost
2. Loop examples of various patterns
6. General Arrays
o Array algorithms, Array reference semantics
o Arrays and digital audio; Multidimensional arrays
o PageRank
7. Object-oriented Programming (OOP)
o User-defined type: encapsulation of data+code
o OOP design and analysis
o The OOP Encapsulation Principle
o OOP examples: Random vs Math.Random; StdDraw vs
DrawingPanel; Complex numbers and fractal graphics
8. Class Relationship; Inheritance/Polymorphism
o Class relationship: Composition, association, inheritance
o Inheritance and object construction; Method override
o Inheritance hierarchy (Critters hierarchy as an example)
o Event-driven programming (Critters with coordination)
o Polymorphism
o Interface
9. Programming with generic types: Sorting, searching
10. GUI Frameworks

You might also like