View/Open

advertisement
CS 107 Introduction to Programming (Java)
Fall 2014
Credits: 3 units
Contact Hours:
Section 1: Mon and Wed, 1400-1515, Room EBA-345
Section 2: Mon and Wed, 1600-1715, Room GMCS-301
Instructors: Ivan Bajic
Office: GMCS 538 Email: ibajic@rohan.sdsu.edu Phone: 619-594-7253
Office Hours: Mon-Thurs 1515-1600, and by appointment
*Course Materials
1. Required text: Beck, CS107 Course Reader: Cooperative Learning Exercises, SDSU, 2014.
2. Required text: Horstmann, Java for Everyone: Late Objects, Wiley, 2013.
ISBN-13: 978-1-118-06331-6.
3. Optional text: Hahn, Harley Hahn's Guide to UNIX and Linux, McGraw-Hill, 2008.
ISBN-13: 978-0-073-13361-4 .
4. CS107 lecture notes/slides (available on Blackboard)
*Course Information for CS 107
Description from the Official Course Catalog
Programming methodology and problem solving. Basic concepts of computer systems, algorithm design
and development, data types, program structures. Extensive programming in Java.
Prerequisites: Satisfaction of the Entry-Level Mathematics requirement.
Course Type: Required course in the program
*Specific Goals for CS 107
Course-Level Student Learning Outcomes
* Configure a Java Development Kit and Integrated Development Environment for Java programming.
* Produce clearly written code in an industry standard style appropriate for Java.
* Define both primitive and compound data types and give examples in Java of each type.
* Incorporate user-interaction input and output in a program through either console or graphical user
interface methods.
* Design, implement, test, and debug a program that uses each of the following fundamental
programming constructs: string processing, numeric computation, simple I/O, arrays and the Java API.
* Explain the basic control structures most programming languages employ.
* Define, analyze and code the basic Java conditional and iterative control structures and explain how
they can be nested.
* Design, implement, test, and debug functions and methods that can be used in programs, and
demonstrate the way parameters are passed in such functions and methods.
* Create analytical algorithms that use arrays for solving simple problems.
* Formulate algebraic expressions that describe mathematically the solutions to problems which are
presented verbally.
* Apply basic software engineering concepts.
* Solve problems that have origins in a variety of disciplines including math, science, and the Internet.
* Write Java programs using object-oriented design, and contrast the difference between object-oriented
and procedural code.
* Use object-oriented programming (OOP) concepts to design applications and computer programs.
* Evaluate and analyze the concepts of OOP including inheritance and polymorphism.
* Apply the principles of interface, inheritance and class hierarchy.
* Design and implement classes that use inheritance.
* Design and implement classes and interfaces that use polymorphism.
*Relationship to CS Program Course Outcomes
CS 107 addresses the following CS Program course outcomes (CS Program Student Outcomes):
* a) An ability to apply knowledge of computing and mathematics
* b) An ability to analyze a problem, and identify and define the computing requirements appropriate
to its solution
* c) An ability to design, implement, and evaluate a computer-based system, process, component, or
program to meet desired needs
* d) An ability to function effectively on teams to accomplish a common goal
* f) An ability to communicate effectively with a range of audiences
* h) Recognition of the need for and an ability to engage in continuing professional development
* i) An ability to use current techniques, skills, and tools necessary for computing practice
* j) An ability to apply mathematical foundations, algorithmic principles, and computer science theory
in the modeling and design of computer-based systems in a way that demonstrates comprehension of
the tradeoffs involved in design choices.
* k) An ability to apply design and development principles in the construction of software systems of
varying complexity.
*Topics Covered
The following topics are covered in CS 107:
* The Software Development Environment: Java run-time environment, integrated development
environments (IDEs), compiled vs. interpreted languages, obtaining and installing a Java IDE, compiler
errors vs. run-time errors
* Fundamentals of computer systems (hardware and software) and programming languages.
* Introduction to the UNIX operating system: working with files, folders, text editors
* Java, Java bytecode, Java Virtual Machine, interface (GUI vs. console), edit-compile-run
* Java language elements, syntax, programming errors, debugging
* Coding standards, conventions and styles: indentation options, names for variables and methods
* Data types: primitive vs. compound types, numeric types, range and precision, char types, String types,
logical types, array types, type compatibility, Java-defined classes as compound types
* Variable expressions: numeric operators and expressions, String operators and expressions, logical
operators and expressions, operator precedence
* Basic input-output strategies: console I/O, formatting values for clean output
* Control structures: conditional statements, loop statements, nesting levels in control statements
* Arithmetic operators; relational operators; logical operators
* Using a Java-defined API class
* Methods (functions, procedures, subroutines) and functional programming: parameter passing,
functional returns, variable scope, method overloading, modularity, implementation and testing strategies
* Recursion
* Arrays
* Object-Oriented Programming using classes and methods
* Creating and using a programmer-defined class
* Classes and objects, building an example class, testing classes, static variables and methods,
constructors, reference variables
* Encapsulation of member data and member methods
* Instance vs. static members and methods
* Data privacy as supported by mutator, accessor, and constructor methods
* Inheritance, class hierarchies, derived classes
* Inheritance, constructors, public-private-protected-package, arrays of objects (intro to polymorphism)
* Polymorphism, dynamic binding and polymorphic method invocation
* Polymorphism, abstract classes, interfaces
* Class inheritance: creating subclasses, overriding, class hierarchies, interface hierarchies
*Course Schedule and Grading Policies
Due Dates for Major Assignments and Exams
Week
Topic
(Approx.)
1
Overview of computers and programming: computers, CPUs,
machine language, assembly language, high/low-level
languages, compilers, executables, Java compiler, Java
interpreter, JVM, bytecode, Java as a cross-platform language
2
Introduction to the Unix operating system; introduction to vi
and pico text editors
HW1: 9/5
3
The programming process: editing, compiling, and
interpreting Java programs
3
Java program structure: variables; type declarations;
elementary input and output
4
Java program structure: operators; expressions; data type
conversions
4
Control structures: conditional constructs; iterative constructs
HW2: 9/19
5
Control structures: iterative constructs (continued)
5
Introduction to methods (functions and subroutines): static
methods, returned values, scope of variables, parameters
1st Midterm, 9/24
6
Methods (continued)
HW3: 10/3
7
Arrays
8, 9
Classes and objects: introduction to object-oriented
programming
HW4: 10/17
HW5: 10/24
10, 11
Classes and objects (continued)
2nd Midterm, 10/29
HW6: 11/7
12, 13
Classes and objects: inheritance and polymorphism
HW7: 11/21
14, 15
Classes and objects (continued)
HW8: 12/5
Final Exam: Sat., Dec. 13, 2014, from 1:00pm-3:00pm
Scored activities and weighting by percentage of total score:
Programming assignments (100 points, 8 at 12-13 points each, 20%)
Readings
Horst 1
Hahn 1–4, 22, 24–26
Horst 1
Horst 2
Horst 2
Horst 3; 4
Horst 4
Horst 5
Horst 5
Horst 6
Horst 8
Horst 8
Horst 9
Horst 9
First Midterm (100 points, 20%)
Second Midterm (100 points, 20%)
Final Exam (200 points, 40%)
Grading Scale:
A
A–
B+
B
B–
95% and above
90%
87%
83%
80%
C+
C
C–
D
F
75%
70%
65%
55%
below 55%
*Other Course Policies
Special Assistance: If you are a student with a disability and believe you will need accommodations for
this class, it is your responsibility to contact Student Disability Services at (619) 594-6473. To avoid any
delay in the receipt of your accommodations, you should contact Student Disability Services as soon as
possible. Please note that accommodations are not retroactive, and that accommodations based upon
disability cannot be provided until you have presented your instructor with an accommodation letter from
Student Disability Services. Your cooperation is appreciated.
Download