Computer Science 121: Introduction to Problem Solving with Computers (A Java Language Course).
What is CS 121 about?
121 is intended to teach you how to program in Java, one of the most popular modern computer languages. Java brings a discipline to programming, called the object-oriented paradigm. No previous programming experience is required; however, this course is intended for Computer Science majors or those who plan on applying to the major.
The course is the first required class for the UMass computer science major; it is also required of Informatics majors, electrical engineering majors, and mathematics majors at UMass-Amherst. Non-majors should strongly consider taking an introductory programming course designed specifically for non-CS majors such as COMPSCI 119 or COMPSCI/STATISTC 190F.
In addition to basic programming constructs such as looping, conditions, arrays, file handling, and methods, much attention is given to the Java object model as well as to Java's event model and its relation to graphical user interfaces.
How can I register for CS121?
If you are not able to enroll yourself, you will need to request an override via the online form. After you submit your override request you will be added to the waitlist and if we are able to offer you a seat we will contact you via email. To read more about the override process and for the online form please visit this link:https://www.cics.umass.edu/ugrad-education/overrides
How does the course work?
The course follows a flipped classroom model of teaching and learning. We will be using lectures, labs, and the “Programming in Java (Early Objects)” online textbook from zyBooks.
Do I have to attend class?
- Lectures:Participation activities from the textbook are due before lecture and challenge activities are due after the lecture. Lectures are interactive and parallel the text material, but may expand upon or otherwise deviate from the text. In lecture, you can download starter code and develop along with the instructor and use iclickers for group work.
- Labs:You work in a group at developing code and answering questions that reinforces the topics covered in the text and in lecture. Although the lab document is submitted individually, the results may be the same for each group member.
- Textbook:The course is based on an interactive textbook from zyBooks that is state-of-the-art learning material, proven effective, and designed to maximize learning while respecting student time. You need to create an account at learn.zybooks.com. You will be given the code to enter when the semester starts. Students must use their UMass email when enrolling.. See this link for answers to common questions about using zyBooks: http://www.zybooks.com/faq/. The online textbook has embedded exercises and assignments. Participation activities are due before lecture and challenge activities are due after the lecture.
- Learning Management System:The course website is on Moodle. Moodle has a course forums for communicating with staff and is used for posting lecture and discussion material. The Moodle course page will become available one week before class begins.
Lecture attendance is mandatory. You attend the lecture on the week day for your section i.e. if you enrolled in the Tuesday section, then your lecture is on Tuesday, and if you enrolled in the Thursday section, then your lecture is on Thursday. Lab attendance is mandatory. You must attend the section you registered for. Lab sections are held once per week. You will develop code and discuss the concepts covered that week in groups. Lab grades include attendance and submission of a lab document.
How hard is CS 121?
CS 121 is actually quite challenging. It has an R2 designation (a general designation at UMass for analytical reasoning courses), and it's about as hard as any R2 on campus. Don't take this course lightly. There are a great many small assignments so it's critical to keep up. To succeed in 121 you've got to stay on top of the assigned material.
Do I need a computer to do the class?
You will need a reliable laptop computer for this class. Chromebooks, Microsoft Surface, and tablets will not work for this course. Your laptop must be configured to access the Eduroam wireless network. Please see or visit the campus OIT office for support.
iClickers are required for lectures. You must register your iClicker in the Moodle course page to get points for answering iClicker questions. You must purchase a specific type of iClicker model 2. See https://www.umass.edu/it/audience-response-system
Are there special software tools that I need for this class?
You'll need the Java Development Kit (JDK) to program. Additionally, we use jGrasp as a development tool as it is easy to install and learn. Note that we will provide support for jGrasp but no other IDE (for e.g. Eclipse, Dr Java etc.). We will provide instructions for how to install JDK and JGrasp.
How can I get help with COMPSCI 121?
- Attend lecture and lab.
- Visit Instructor/TA office hours.
- Get tutoring at the DuBois Library Learning Resource Center.
- Attend the LRC group review such as ExSEL and Supplemental Instruction.
- Study with a peer or peer group.
Please see our syllabus for more detailed information about the course:
CS 121 Syllabus
Approximate List of Topics Covered
- Coding style
- Commenting and documentation
- Modular code design
- Diagramming techniques
- Skeleton code (stubbing)
- Test your code
- Project management
PRIMITIVE DATA TYPES
- Numeric: int, double
- Logical, character: boolean, char
- literal values
ABSTRACT DATA TYPES (Classes)
- Java library classes: String, Scanner, Random, etc.
- User-defined classes/interfaces
- Assignment and Arithmetic Operators
- Relational Operators, Increment Operator, Logical Operations, Concatenation
- Memory model of assignment and reference
- Initialization of Instance Variables
- Type Conversion, Numeric Cast
- The final Keyword
- Static final Variables
- Flow of Control: if, else
- Null References
- Import Statements
RUNNING A PROGRAM
- The main Method
- Using System Resources
- Compiling Java source files
- Using a debugger
- Importing Java libraries
- Defining a Class
- Public Class Files
- Objects and Encapsulation
- Instance Members, Class Members and Finalization
- Setter and Getter Methods
- Member Classes
- Local Classes
- Nested Top-Level Classes
- Casting (generics)
- Method Signature
- Access level, return type, name, arguments
- Method Overloading
- Static Methods
- Methods and encapsulation
GRAPHICAL USER INTERFACE (GUI)
- The event model, callbacks
- Java libraries awt and swing
- String manipulation
- String class methods
- The StringBuffer class
- Handling Errors Using Exceptions
- Common Exceptions
- Checked and Unchecked Exceptions
- Chained Exceptions in Java
- Standard Input and Output Stream Classes
- File I/O using Scanner
INHERITANCE BY EXTENSION
- Extending a superclass (generalization) abstract classes
INTERFACES (Inheritance by implementation)
- Interfaces and polymorphic behavior
- Polymorphism Based on Overloaded Methods
- Polymorphism, Type Conversion, Casting, etc.
- Runtime Polymorphism through Inheritance
- Polymorphism and the Object Class
- Arrays of Primitive Types
- Array indexing
- Length of an array
- Arrays of Objects
- 2D Arrays