CS1440 Computer Science I

 
    Course Topic:    
  Taking this course will provide you with a basic foundation for programming in general programming languages and here with focus on Java, one of the most widely used computer languages in the world. Computer programs are written to tell computers what exactly they should do in a step by step manner. To do this we should know to major thing; one a language that computers could understand and the other the way computers process information and make decision. In this course we focus on Java programming language and you will learn how to solve problems by Java. The later part could be applied for any other general programming languages such as C++, Python, C# etc.

 
  Course Goals:  
 
  • To give you a new way of thinking and problem solving with the computer programming.
  • To introduce Java concepts and instructions such as defining variables, conditional statements, loops and functions with a variety of easy examples.
  • To let you learn programming by doing hands-on work in labs associated with this course.
  • To present you with concepts of Object-Oriented Programming.
 
     
  Lectures:  
 
  • 1440-104:      MWF 12:00 - 12:50 pm, in BH 310
  • 1440-105:      MWF 1:00 pm - 1:50 pm, in BH 318
 
     
  Labs:  
  Alongside this course there is a mandatory lab session which is to provide you with the opportunity to have hands-on experience with Java language. Labs are essential part of learning this course, as teaching assistants available at lab sessions could assist you with implementing Java codes related to the course assignments and projects. Labs have their own sessions and policies. Please check their requirements on ASULearn.  
     
  Contact Information:  
 
  • Professor: Dr. Mohammad Mohebbi
  • Phone: 828 262 2740
  • Office: Belk 312C
  • Email: My appstate username is mohebbim, and my email address is my username AT appstate.edu
 
     
  Office Hours:  
 
  • T,W,TR: 3:00 to 4:00
  • Or whenever my office door is open.
  • If the office hours do not work for you, please email me, we set another time.
 
     
  Help Sessions:  
  Sundays and Mondays 6:00-9:00 p.m. in Belk 311, and Tuesdays 6:00-6:30 p.m. in Belk 310, and then 6:30-9:00 in Belk 311.  
     
  Textbook:  
  Starting Out with Java: Early Objects (Fourth edition), Tony Gaddis, Addison-Wesley Pearson 2011. The book’s ISBN-10 is 0-13-216476-0 and its ISBN-13 is 978-0-13-216476-4.  
     
  Grading and Coursework Policies:  
  All coursework for this class is individual.
The following grading scale will used in this course:
-   Attendance 5%
-   Quizzes 10%
-   Labs assignments 25%
-   In-class exams 30%
-   Final exam 30%
 
     
  Grading Scale:  
 
  A= 93 to 100 A- = 90-92.9    
B+= 87 to 89.9 B= 83-86.9 B- = 80-82.9
  C+= 77 to 79.9 C= 73-76.9 C- = 70-72.9
  D+= 67 to 69.9 D= 63-66.9 D- = 60-62.9
  F= < 60        
 
     
  Important Notes:  
  - Based on the CS department policies, you need to have a C or better in this course to be able to take CS2440.

 
  Academic Integrity:  
  Please be aware of academic integrity policy at Appalachian State University and how violations are treated. You can find all the information related to academic integrity at this address (http://studentconduct.appstate.edu/).

 
  Students with Disabilities:  
  In accordance with the Americans with Disabilities Act (ADA) of 1990, and Section 504 of the Rehabilitation Act of 1973, the Appalachian State University is committed to provide reasonable accommodations for individuals with documented qualifying disabilities. The students seeking accommodations based on a substantially limiting disability must contact and register with The Office of Disability Services (ODS) at http://www.ods.appstate.edu/ or 828-262-3056. Upon a complete registration, individuals will meet with ODS staff to discuss eligibility and appropriate accommodations.  
     
  Syllabus:  
  A tentative syllabus for this course appears below.
Section numbers matches the course book’s chapters or subchapters.
 
 
22 Aug Lab 0  
23 Aug Course Introduction
2.1 The Parts of a Java Program
 
25 Aug 2.2 The print and println Methods and the Java API
2.3 Variables and Literals
 
28 Aug 2.4 Primitive Data Types Quiz 1
29 Aug Lab 1  
30 Aug 2.5 Arithmetic Operators
2.6 Combined Assignment Operators
 
1 Sept 2.7 Conversion between Primitive Data Types
2.8 Creating Named Constants with static final
 
4 Sept No class --- Labor Day  
5 Sept No Lab  
6 Sept 2.9 The String Class
2.10 Scope
 
8 Sept 2.11 Comments
2.12 Programming Style (including Checkstyle)
2.13 Reading Keyboard Input
 
11 Sept 2.15 The printf Method
The String.format Method
Quiz 2
12 Sept Lab 2  
13 Sept 3.1 Classes  
15 Sept 3.2 More about Passing Arguments
3.3 Instance Fields and Methods
 
18 Sept 3.4 Constructors
3.6 Constants, Variables, and Scope
3.7 Packages and import Statements
 
19 Sept Lab 3  
20 Sept 3.5 A Bank Account Class  
22 Sept 4.1 The if Statement
4.2 The if-else Statement
 
25 Sept 4.3 The Payroll Class
4.4 Nested if Statements
Quiz 3
26 Sept Lab 3 (continued)  
27 Sept 4.4 More on Nested if Statements
4.5 The if-else-if Statement
 
29 Sept 4.6 Logical Operators
4.7 Comparing String Objects
 
2 Oct 4.10 The switch Statement
4.13 The Random Class
Quiz 4
3 Oct Lab 4  
4 Oct 4.12 Focus on Problem Solving: The Sales Commission Class  
6 Oct In-class Exam 1  
9 Oct 5.1 The Increment and Decrement Operators
5.2 The while Loop
5.3 Using the while Loop for Input Validation
Quiz 5
10 Oct Lab 5  
11 Oct 5.4 The do while Loop
5.5 The for Loop
 
13 Oct No class --- Fall Break  
16 Oct 5.5 More on for Loops
5.6 Running Totals and Sentinel Values
Quiz 6
17 Oct Lab 6  
18 Oct 5.7 Nested Loops
5.8 The break and continue Statements
 
20 Oct 5.10 Writing to Files  
23 Oct 5.10 Writing to and Reading from Files Quiz 7
24 Oct Lab 7  
25 Oct 6.1 Static Class Members
6.2 Overloaded Methods
6.3 Overloaded Constructors
 
27 Oct 6.4 Passing Objects as Arguments to Methods
6.5 Returning Objects from Methods
 
30 Oct 6.6 The toString Method
6.7 Writing an equals Method
Quiz 8
31 Oct Lab 8  
1 Nov 6.8 Methods that Copy Objects  
3 Nov 6.9 More on Aggregation
6.10 The this Reference Variable; null references
 
6 Nov 6.12 Enumerated Types Quiz 9
7 Nov Lab 9  
8 Nov 7.1 Introduction to Arrays
7.2 Processing Array Contents
 
10 Nov 7.3 Passing Arrays as Arguments to Methods
7.5 Returning Arrays from Methods
 
13 Nov 7.4 Some Useful Array Algorithms and Operations Quiz 10
14 Nov Lab 10  
15 Nov 7.6 Arrays of Strings
7.7 Arrays of Objects
 
17 Nov In-class Exam 2  
20 Nov 7.10 Two-dimensional Arrays
7.11 Arrays of Three and More Dimensions
Quiz 11
21 Nov Lab 11  
22 - 24 Nov No class --- Thanksgiving Break  
27 Nov 7.12 Command-line arguments
7.13 The ArrayList Class
Quiz 12
28 Nov Lab 12  
29 Nov 9.1 What is Inheritance?
9.2 Calling the Superclass Constructor
 
1 Dec 9.3 Overriding Superclass Methods
9.5 Classes that Inherit from Subclasses
 
4 Dec 9.6 The Object Class
9.7 Polymorphism
Quiz 13
5 Dec Lab 13  
6 Dec 9.8 Abstract Classes and Abstract Methods
9.9 Interfaces