CS 113: Introduction to Computer Science 1
Section 103 (Call #12654); Fridays 6:00pm - 9:05p at STUDENT MALL room PC 36
Instructor: Cesar Bandera
Teaching Assistant: Ling Zhong
Fundamentals of computer science are introduced, with emphasis on programming methodology and problem solving. Topics include basic concepts of computer systems, software engineering, algorithm design, programming languages and data abstraction, with applications. A high level language is fully discussed and serves as the vehicle to illustrate many of the concepts. This course uses programming language Java and the Eclipse Integrated Development Environment.
In addition to the specific course objectives, the course intends to help students develop a wide range of analytical, communication, interpersonal, and technology skills. Upon completion of the course students should have the following skills:
· View problem statements in object-oriented terms, and design object-oriented solutions to problems.
· Implement object-oriented solutions in a high-level language using an industry-standard integrated development environment.
· Communicate designs via in-line comments and verbally to classmates.
· Ethically reuse code.
Each class consists of a lecture followed by a lab session (in the same room) with exercises that implement the concepts discussed in the lecture and assigned reading. The class schedule follows the chapters of the textbook, and each week is typically devoted to one chapter of the textbook (see class agenda). Each chapter in the text has its own set of slides and lab exercises, and these are accessible on Moodle.
Homework: The lab manual for Chapters 1 through 6 contains two types of lab exercises: PRE-LAB exercises and normal exercises. With the exception of the first day of class, the PRE-LAB exercises for a chapter must be submitted via Moodle before the start of the lecture corresponding to that chapter. Normal (non-Pre-Lab) exercises will be conducted during the lab session that follows the corresponding lecture. The homework for Chapters 7 through 13 will consist of selected normal exercises (these chapters do not have any Pre-Lab exercises).
Java Software Solutions: Foundations of Program Design,
7th Edition (John Lewis, William Loftus; Addison-Wesley, 2012;
ISBN-10: 0132149184, ISBN-13: 9780132149181)
Lab Manual for Java Software Solutions: Foundations of Program Design, 7th
Edition (John Lewis; Addison-Wesley, 2012; ISBN-10: 0132662418, ISBN-13:
9780132662413)
Eclipse Integrated Development Environment for Java Developers (http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/indigor)
· 30% Labs
· 20% Midterm
· 30% Final
· 10% Homework
· 10% Class Participation
Class |
Agenda |
Reading and Assignments Due |
|
September 2 |
· Computer Processing · Hardware Components · Networks |
· The Java Programming Language · Program Development & Eclipse · Object-Oriented Programming |
Chapter 1 and |
September 9 |
· Character Strings · Variables and Assignment · Primitive Data Types · Expressions · Data Conversion |
· Interactive Programs · Graphics · Applets · Drawing Shapes |
Chapter 2, |
September 16 |
· Creating Objects · The String Class · Packages · Formatting Output |
· Enumerated Types · Wrapper Classes · Components and Containers · Images |
Chapter 3, |
September 23 |
· Anatomy of a Class · Encapsulation · Anatomy of a Method |
· Graphical Objects · Graphical User Interfaces · Buttons and Text Fields |
Chapter 4, |
September 30 |
· The if Statement and Conditions · Other Conditional Statements · Comparing Data · The while Statement |
· Iterators · The ArrayList Class · Determining Event Sources · Check Boxes and Radio Buttons |
Chapter 5, |
October 7 |
· The switch Statement · The Conditional Operator · The do Statement |
· The for Statement · Drawing with Loops & Conditionals · Dialog Boxes |
Chapter 6, “Rock, Paper, Scissors” “Using the Coin Class” |
October 14 |
· Software Development Activities · Identifying Classes and Objects · Static Variables and Methods · Class Relationships · Interfaces |
· Enumerated Types Revisited · Method Design · Testing · GUI Design and Layout |
Chapter 7, “Changing People” “Modifying the Coin Class” |
October 21 |
Midterm Exam |
|
|
October 28 |
· Declaring and Using Arrays · Arrays of Objects · Variable Length Parameter Lists |
· Two-Dimensional Arrays · Polygons and Polylines · Mouse Events and Key Events |
Chapter 8 “Tracking Sales” “Exploring Variable Length Parameter Lists” |
November 4 |
· Creating Subclasses · Overriding Methods · Class Hierarchies · Inheritance and Visibility |
· Designing for Inheritance · Inheritance and GUIs · The Timer Class |
Chapter 9, “Exploring Inheritance” |
November 11 |
· Late Binding · Polymorphism via Inheritance · Polymorphism via Interfaces · Sorting |
· Searching · Event Processing Revisited · File Choosers and Color Choosers · Sliders |
Chapter 10, (TBD) |
November 18 |
· Exception Handling · The try-catch Statement · Exception Classes · I/O Exceptions |
· Tool Tips and Mnemonics · Combo Boxes · Scroll Panes and Split Panes |
Chapter 11, (TBD) |
November 25 |
· Thanksgiving Vacation |
|
N/A |
December 2 |
· Recursive Thinking · Recursive Programming |
· Using Recursion · Recursion in Graphics |
Chapter 12, (TBD) |
December 9 |
· Collections and Data Structures · Dynamic Representations · Queues and Stacks |
· Trees and Graphs · The Java Collections API |
Chapter 13, (TBD) |
December 16 |
Final Exam |
|
|
This class maintains a fast pace. Attendance is important and recovery from absence is difficult. If a student is absent from lecture or lab five times (the first day counts), the student's name will be recommended for withdrawal to the Dean of Freshman Studies. Two lates is equivalent to one absence. All homework assignments will be collected during the lab session. Late assignments will not be accepted.
Academic integrity and honesty are of paramount importance in this course. We will follow the NJIT Honor Code and any violation will be brought to the attention of the Dean of Students. Cheating on an exam will result in an "F" in the course. Collaboration is encouraged, but you can only build upon code that you understand and can explain.