Download Course Syllabus - My SMCC - Southern Maine Community College

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
South Portland, Maine 04106
Computer Science Program
Title: Principles of Computer Science
Catalog Number: CSCI 110
Credit Hours: 4
Total Contact Hours: 60
Lecture (or Lab): Lecture
Instructor: Paul Richardson
Office Hours – Location:
Contact Information:
12:00-1:30 TR - ROSS TECH 210
[email protected]
Course Syllabus
Course Description
This course will teach you how to design and write computer algorithms to solve a variety of
problems using the Java programming language. Algorithms will be implemented as programs
in Java. Topics include primitive data types and operations in Java, three types of control
statements, methods, arrays and introduction of object-oriented concepts such as classes and
encapsulation. Most of these topics are designed to provide students with tools that are useful
when encountering computers in today’s workplace. Furthermore, they are designed to enhance
problem-solving and logical reasoning abilities. Prerequisite: Successful completion of MATH 050
or higher or placement into a math course at or above MATH 145
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
•
•
Course Objectives
Students completing this course will be able to solve computable problems using the Java
programming language.
After successfully completing the course, the student will be able to:
Create variables to hold values during program execution.
Demonstrate to ability to create functions to perform specialized tasks needed to solve problems.
Describe number systems and representation of data in the computer.
Demonstrate the ability to correctly sequence operations to solve computable problems.
Demonstrate the ability to correctly use loops and decision structures.
Summarize the uses of hash tables to solve appropriate computable problems
Demonstrate an ability to use arrays to solve appropriate problems.
Design and code solutions to computable problems using an appropriate computer language.
Troubleshoot programs of their own and those provided by the instructor for debugging
purposes.
Implement non-recursive algorithms in Java
Learning Outcomes
This course seeks to develop the following core abilities:
Global Awareness / Diversity –
Identify resources and strategies needed to problem solve and/or achieve goals inclusive of
diverse perspectives and experiences.
Demonstrate the ability to work collaboratively with people from diverse backgrounds in pursuit
of a common objective or goal utilizing interpersonal skills that are essential to team building,
conflict resolution and cross-cultural communication.
Critical Thinking –
•
•
•
•
•
•
•
•
•
•
•
•
A student can interpret information logically by selecting and organizing relevant facts and
opinions and identifying the relationships among them.
A student can analyze an issue or problem by separating it into its component parts and
investigating the relationship of the parts to the whole.
A student can synthesize information by combining ideas from multiple sources to come to an
independent conclusion.
A student can evaluate information by making informed judgments as to whether the
information is accurate, reliable or useful.
A student can apply theory to practice.
Communications –
Demonstrate a command of the English language
Identify and extract relevant data from written and oral presentations
Quantitative Methods –
Recognize problems that can be solved with quantitative methods
Identify the quantitative components of a problem
Select and appropriate mathematical method to solve a problem
Demonstrate accurate computational and/or algebraic skills to solve a problem
Estimate the reasonableness of answers to problems
Attendance Policy: Students will be dropped from the course with a grade of AF if they miss 3
consecutive meetings or a total cumulative number of classes equal to 2 weeks of class (4 class
meetings). Attendance on time for each class is expected.
Cell Phones: Cell phones, text-messaging devices, and other social-networking connections
may not be used in this class. If you bring such equipment to the classroom, it must be turned to
vibrate before the class starts and stay that way throughout the class period. Use of such
equipment is distracting to those nearby and will not be tolerated.
Late Assignments: Projects are due by midnight the class following when they were assigned.
Since this is an accelerated summer course any programs assigned on a Tuesday will be due two
day later on Thursday. I will assign more difficult programs on Thursday so you have more time
to work on them. Do NOT get behind in this class as all program build on earlier programs.
A late penalty of 10 points per week will be earned.
Learning Objectives
Week 1
Ch 1 – Introduction to computers, programs, and Java
 To understand computer basics, programs and operating systems
 To describe the relationship between Java and the World Wide Web
 To understand the meaning of Java language specification, API, JDK and IDE
 To write a simple Java program
 To display output on the console
 To explain the basic syntax of a Java program
 To create, compile and run Java Programs
 To display output using the JOptionPane message dialog boxes
 To become familiar with Java programming style and documentation
 To explain the differences between syntax errors, runtime errors, and logic errors
Week 1




















Week 2








Week 2 




Week 3
Ch 2 – Elementary Programming
To write Java programs to perform simple computations
To obtain input from the console using the Scanner class
To use identifiers to name variables, constants, methods, and classes
To use variables to store data
To program with assignment statements and assignment expressions
To use constants to store permanent data
To name classes, methods, variables, and constants by following their naming conventions
To explore Java numeric primitive data types: byte, short, int, long, float, and double
To perform operations using operators: +, -, *, /, %
To perform exponent operations using Math.pow(a, b)
To write integer literals, floating-point literals, and literals in scientific notation
To write and evaluate numeric expressions
To obtain the current system time using System.currentTimeMillis()
To use augmented assignment operators
To distinguish between postincrement and preincrement and between postdecrement and
predecrement
To cast the value of one type to another
To describe the software development process and apply it to develop the loan payment
program
To represent characters using the char data type
To represent a string using the String type
To obtain input using the JOptionPane input dialog boxes
Ch 3 – Selections
To declare boolean variables and write Boolean expressions using comparison operators (§3.2).
To implement selection control using one-way if statements (§3.3).
To implement selection control using two-way if-else statements (§3.5).
To implement selection control using nested if and multi-way if statements (§3.6).
To avoid common errors in if statements (§3.7).
To generate random numbers using the Math.random() method (§3.8).
To combine conditions using logical operators (&&, ||, and !) (§3.11).
To program using selection statements with combined conditions (LeapYear, Lottery) (§§3.12–
3.13).
To implement selection control using switch statements (§3.14).
To write expressions using the conditional operator (§3.15).
To format output using the System.out.printf method (§3.16).
To examine the rules governing operator precedence and associativity (§3.17).
To get user confirmation using confirmation dialogs (§3.18).
 To apply common techniques to debug errors (§3.19).
Exam 1
Week 3
Week 4

Week 4






Week 5 





Week 5







Ch 4 – Loops
 To write programs for executing statements repeatedly using a while loop (§4.2).
 To follow the loop design strategy to develop loops (§§4.2.1–4.2.3).
 To control a loop with a sentinel value (§4.2.4).
 To obtain large input from a file using input redirection rather than typing from the
keyboard (§4.2.5).
 To write loops using do-while statements (§4.3).
 To write loops using for statements (§4.4).
 To discover the similarities and differences of three types of loop statements (§4.5).
 To write nested loops (§4.6).
 To learn the techniques for minimizing numerical errors (§4.7).
 To learn loops from a variety of examples (GCD, FutureTuition,
MonteCarloSimulation) (§4.8).
 To implement program control with break and continue (§4.9).
 To write a program that displays prime numbers (§4.10).
To control a loop with a confirmation dialog (§4.11).
Ch 5 – Methods
To define methods with formal parameters (§5.2).
To invoke methods with actual parameters (i.e., arguments) (§5.2).
To define methods with a return value (§5.3).
To define methods without a return value (§5.4).
To pass arguments by value (§5.5).
To develop reusable code that is modular, easy to read, easy to debug, and easy to maintain
(§5.6).
To write a method that converts decimals to hexadecimals (§5.7).
To use method overloading and understand ambiguous overloading (§5.8).
To determine the scope of variables (§5.9).
To solve mathematics problems using the methods in the Math class (§§5.10–5.11).
To apply the concept of method abstraction in software development (§5.12).
To design and implement methods using stepwise refinement (§5.12).
Exam 2
Ch 6 – Single Dimensional Arrays
To describe why arrays are necessary in programming (§6.1).
To declare array reference variables and create arrays (§§6.2.1–6.2.2).
To initialize obtain array size using arrayRefVar.length and know default the values in an array
(§6.2.3).
To access array elements using indexed variables (§6.2.4).
To declare, create, and initialize an array using an array initializer (§6.2.5).
To program common array operations (displaying arrays, summing all elements, finding the
minimum and maximum elements, random shuffling, and shifting elements) (§6.2.6).
To simplify programming using the for-eachfor-each loops (§6.2.7).
Week 6 







Week 6



Week 7 




Week 7








Week 8







Week 8
To apply arrays in the application development (LottoNumbers, DeckOfCards) (§§6.3–6.4).
To copy contents from one array to another (§6.5).
To develop and invoke methods with array arguments and return values (§§6.6–6.78).
To define a method with a variable-length argument list (§6.89).
To search elements using the linear (§6.910.1) or binary (§6.910.2) search algorithm.
To sort an array using the selection sort approach (§6.1011.1).
To sort an array using the insertion sort approach (§6.1011.2).
To use the methods in the java.util.Arrays class (§6.1112).
Exam 3
Ch 7 – Multidimensional Arrays
To give examples of representing data using two-dimensional arrays (§7.1).
To declare variables for two-dimensional arrays, create arrays, and access array elements in a
two-dimensional array using row and column indexes (§7.2).
To program common operations for two-dimensional arrays (displaying arrays, summing all
elements, finding min and max elements, and random shuffling) (§7.3).
To pass two-dimensional arrays to methods (§7.4).
To write a program for grading multiple-choice questions using two-dimensional arrays (§7.5).
To solve the closest-pair problem using two-dimensional arrays (§7.6).
To check a Sudoku solution using two-dimensional arrays (§7.7).
To use multidimensional arrays (§7.8).
Chapter 8 – Classes and Objects
To describe objects and classes, and use classes to model objects (§8.2).
To use UML graphical notation to describe classes and objects (§8.2).
To demonstrate how to define classes and create objects (§8.3).
To create objects using constructors (§8.4).
To access objects via object reference variables (§8.5).
To define a reference variable using a reference type (§8.5.1).
To access an object’s data and methods using the object member access operator (.) (§8.5.2).
To define data fields of reference types and assign default values for an object’s data fields
(§8.5.3).
To distinguish between object reference variables and primitive data type variables (§8.5.4).
To use the Java library classes Date, Random, and JFrame (§8.6).
To distinguish between instance and static variables and methods (§8.7).
To define private data fields with appropriate get and set methods (§8.8).
To encapsulate data fields to make classes easy to maintain (§8.9).
To develop methods with object arguments and differentiate between primitive-type arguments
and object-type arguments (§8.10).
To store and process objects in arrays (§8.11).
Final exam in two parts.
Course Requirements
Students will create 7 individual programming projects, take 3 tests during scheduled class times
and complete a comprehensive final examination. Projects will involve computation,
manipulation of data as well as searching and sorting arrays. Students should expect to spend 810 hours per week outside of class working on projects, homework and course preparation.
Student Evaluation and Grading
Three in-class tests
Programs, Homework, Quizzes
Final Exam (Comprehensive)
30%
50%
20%
Grading Scale:
93 – 100
90 - 92.99
87 - 89.99
83 - 86.99
80 - 82.99
77 - 79.99
73 - 76.99
70 - 72.99
0 - 69.99
A
AB+
B
BC+
C
CF
Text, Tools and / or Supplies
Introduction to Java Programming 9e by Daniel Liang. ISBN-13: 978-0-13-293652-1. This text
will be used for CSCI 160 and CSCI 290 as well. You should have a notebook for taking notes
and a writing instrument. It is strongly recommended that the student have a USB drive to store
backup copies of all programming assignments. A composition book for your homework is
required. These will be graded on exam days.
End-of-Course Evaluation
In order to gain access to final course grades, students must complete evaluations for each course
attended at SMCC. Evaluations are submitted online and can be accessed through the student
portal site. Students can access the course evaluation report beginning two weeks before the end
of classes. The deadline for submission of evaluations occurs 24 hours after the last day of
classes each semester. Instructors will announce when the online course evaluation is available.
ADA (Americans with Disabilities Act):
Southern Maine Community College is an equal opportunity/affirmative action institution and
employer. For more information, please call 207-741-5798.
If you have a disabling condition and wish to request accommodations in order to have
reasonable access to the programs and services offered by SMCC, you must register with the
Disability Services Coordinator, Sandra Lynham, who can be reached at 741-5923.
Further information about services for students with disabilities and the accommodation process
is available upon request at this number. Course policies about online testing are modified to suit
each individual’s accommodations.
SMCC Pay-for-Print Policy
In an effort to control the escalating cost of supplies and to encourage students to conserve resources,
SMCC charges for printing. Students receive a $20 credit every semester. This credit resets for each
semester and extra credit is not rolled over to the next semester. Per page costs are as follows:




8.5"x11" black and white: $0.10 per page
8.5"x11" color: $0.50 per page
8.5"x14" and 11"x17" black and white: $0.20 per page
8.5"x14" and 11"x17" color: $1.00 per page
Duplex (two-sided) pages are discounted 50% from the listed page costs.
Students can monitor their remaining credit and number of pages printed by visiting the IT Help tab on
MySMCC or by checking the Printing Information icon in the lower right corner of the screen while
logged in to an SMCC computer.
More information about the Pay-for-Print Policy is available on the IT Help tab on MySMCC.
Add-Drop Policy
Students who drop a course during the one-week “add/drop” period in the fall and spring
semesters and the first three days of summer sessions receive a 100% refund of the tuition and
associated fees for that course. Please note any course that meets for less than the traditional
semester length, i.e., 15 weeks, has a pro-rated add/drop period. There is no refund for nonattendance.
Withdrawal Policy
A student may withdraw from a course only during the semester in which s/he is registered for
that course. The withdrawal period is the second through twelfth week of the fall and spring
semesters and the second through ninth week of twelve-week summer courses. This period is
pro-rated for shorter-length courses. To withdraw from a course, a student must complete and
submit the appropriate course withdrawal form, available at the Enrollment Service Center (no
phone calls, please). The designation “W” will appear on the transcript after a student has
officially withdrawn. A course withdrawal is an uncompleted course and may adversely affect
financial aid eligibility. Failure to attend or ceasing to attend class does not constitute withdrawal
from the course. There is no refund associated with a withdrawal.
Plagiarism Statement
Adherence to ethical academic standards is obligatory. Cheating is a serious offense, whether it
consists of taking credit for work done by another person or doing work for which another
person will receive credit. Taking and using the ideas or writings of another person without
clearly and fully crediting the source is plagiarism and violates the academic code as well as the
Student Code of Conduct. If it is suspected that a student in any course in which s/he is enrolled
has knowingly committed such a violation, the faculty member should refer the matter to the
College’s Disciplinary Officer and appropriate action will be taken under the Student Code of
Conduct. Sanctions may include suspension from the course and a failing grade in the course.
Students have the right to appeal these actions to the Disciplinary Committee under the terms
outlined in the Student Code of Conduct.
CSCI 110 – Collaboration Policy
CLASSWORK / HOMEWORK
You may collaborate on CLASS WORK ASSIGNMENTS in and out of class. However, your
final answers MUST be YOUR OWN. This means that you MAY work together to solve the
problems, but the final answers must be done INDEPENDENTLY. (You may NOT copy
another person’s work!)
QUIZZES and TESTS
No discussion of any kind with anyone but the instructor is allowed. Use of unauthorized written
material, cell phones, or other messaging tools is not allowed.
PROJECTS
Discussion of techniques in a natural language (such as English) is allowed. Discussion of an
assignment in a computer or algorithmic language (such as Java) is NOT allowed. Strictly avoid
sharing or exchanging literal statements of computer code or program files. Computer language
questions are to be limited to the language and should not concern the assignment. WHEN IN
DOUBT, SEE THE INSTRUCTOR! Stealing, giving or receiving passwords, code, designs,
drawings, diagrams and/or text from ANY other person (whether from on-campus or offcampus) is NOT allowed. Every line of code that you turn in must be your own!
Any of the following also constitutes cheating:
1.
Having a copy of a program that is not your own.
2.
Accessing or viewing anyone else’s work.
3.
Giving anyone else access to your work.
4.
Attempting to collaborate on projects.
5.
Attempting to deceive the instructor.
Student responsibilities include:
1.
Secure disposal of code and report of missing printouts.
2.
Avoidance of other students who act unethically.
3.
Keeping your program solutions to yourself.
The Penalty
Violations of the collaboration policy will be dealt with according to the code of Academic
Misconduct as outlined above.
I have read, and understand the syllabus and collaboration policy for CSCI110.
PRINT Name (last, first, mi): _____________________________________________
Signature: ______________________________________