Discipline Information (including Academic Honesty, Late Work, Contact Information, etc.)
Prerequisite You need to have been enrolled in CSC 404 or obtain the permission of the department. You need to have a good grasp of objet-oriented programming in Java.
Course Textbook: Computing in Python, JM Morrison
Course Description: This introductory course emphasizes the design and implementation of basic computer programs. Students begin by learning the programming language Python. This is an object-oriented scripting language with very simple structure that is used to develop basic programming and problem solving skills. Students who complete this course are able to write simple programs consisting of multiple modules. It is assumed that the student has no prior programming experience. The learning curve in this class will be steeper than that in CS 352, Web development.
Course Objectives
- You will learn that a data structre is a container that stores related items under a single name and which has rules for access and modfication of its contents.
- You will learn how to create a data structure from scratch by creating a classes for several data structure
- You will learn how to use the Java Collections Interface to manage data structures.
- You will understand the inner workings of Java Generics and be able to use them effectively to facilitate code reuse.
Course Goal This is a course in object-oriented data structures in the Java language. You will learn about data structures from the inside out by building some, and from the outside in by learning how to use the Java Collections Framework effectively. You will integrate them into event-driven applications
Rough outline of the class
- GUI Review (1 wk) We will quickly review Model-View-Controller programming and you will write a pure GUI project to get warmed up configured for Java. We will also spotlight some aspects of Java file IO.
- Sorting Methods (2 wks) The students learn about quadratic and recursive sorts. We create implementations of some of these and assign others as projects. programming and you will write a pure GUI project to get warmed up configured for Java. We will also spotlight some aspects of Java file IO.
- Lists, Stacks, and Generics (2-3 wks) To get warmed up we will build a simple stack class with a stack of strings. We will then discuss the basics of Generics and make this a generic class. We then turn our study to two implementations of a list: one is array based and the other is link-based.
- The Comparable and Comparator Interfaces (1 wk) We will use these to adapt our data structures to the Collections Framework's static Collections.sort() method.
- Iterators and the Iterable Interface(2 wks) Students will learn how to make their data structures accept the enhance collections for loop.
- Dictionaries, Hash and Tree Maps(1 wks) The students learn about the Java Swing API. Inheritance and interfaces are discussed with an extensive suite of examples. We then apply these principles to building simple GUI applications.
- Binary Trees and Heaps(1 wks) The students study how to maintain sorted collections which yield quick access to the largest or smallest element.
- Final Project A capstone project is created by students working on teams that applies all of the major concepts in the class. This project is a full-featured GUI application that functions robustly and which can save its state. It must marshal and retrieve and present material from a large pool of data.
Course Goal: You will learn how to solve problems and automate processes by writing custom applications in a modern programming environment using the procedural programming paradigm. You will demonstrate this skill by creating these sorts of programs.
Class Mechanics
What to Bring to Class Bring your lappy and its power cord. We will use computers most days.
Class Materials Obtain the book from the book room. It is the pied Data Structures in Java book. The author is Mark Allen Weiss.
Class Organization This class is at once lab and lecture. We will demonstrate coding constructs and have you try them right away. You are encouraged to bring your laptop to class and configure your machine to your liking.
Some programming projects will be individual efforts, although there will be a few joint activities (especially in pairs). You are expected to gain an active understanding of the material; this means that you need to be a full participant in class at all times. You are encouraged to share ideas and ask questions. Unless I specify otherwise, you may help each other debug code.
Laptop Usage Policy: Computers are an integral part of this class. Their use is permitted except when explicitly prohibited. We may be piloting LanSchool in this class. If LanSchool is functional, you will be expected to use it while in this classroom.
Programming Assignments and Other Assessments: No one really understands what is going on in a programming class until they can write programs that compile and work. It's this simple: if you can't do this, you don't really understand the material. The biggest mistake made by many CS students is that they confuse an active understanding of the material with a passive understanding. Until you attempt, fuss over and debug programs, you are nowhere. Therefore, you will see work on a wide variety of programs.
Whoa! Back up! You are required to maintain all of your programs on the computer science server. You are also required to keep any written graded assignments returned to you, and keep the programs you turn in in your electronic files. This is your insurance against us accidentally corrupting, destroying or misplacing your files. This does happen sometimes!
Academic Honesty in this class:
You are encouraged to share ideas and ask questions. Unless we specify otherwise, you may help
each other debug code. You may use diagrams, analogies, or other un-technical explanations.
You may not share any code or any "dead-giveaway" help. When you help classmates, your goal
is to enable them to solve similar problems on their own. If you don't think you can comply
with this guideline you should turn down your classmates' request for help. Refer them to
your instructor. You are bound by policy as laid out in these two documents:
- Academic Honesty Policy for Computer Science, as well as
- School-Wide Classroom Policy
Attendance and Tardiness Policy:
Be presnent, mentally and corporeally. Be on time.
Class meets four times a week and takes lab. You are expected to attend every class in order to be successful
in mastering the material covered. If you are more than 5 minutes late you will be considered
Tardy. If you are more than 25 minutes late you will be considered Absent.
Participation is vital to your progress in class. Excessive unexcused absence and tardiness
will not be tolerated and will reflect poorly in your grade. You are expected to be aware of
attendance policy outlined in the Student Handbook and to adhere to it.
Late/Incomplete/Makeup Work in this class:
When you anticipate an excused absence, see us ASAP for makeup arrangements. By
nature, this class builds sequentially and depends on steady progress. If you run into
difficulty, see us and we can grant you and extension to complete your program or project.
Multiple Major Assignments: If you have more than 2 major assignments due on the same day as a scheduled major assignment in this class, please let your instructor know and contact Academic Programs at least 48 hours in advance for relief. We are reasonable people as long as this is not abused.
The Classroom Policy Page contains all of the documents pertaining to general classroom policy in Computer Science; these apply to all CS classes. Make sure you read and understand them.
For information on the following school wide policies, please reference the current version of the Student Handbook available under the NCSSM folder found in the Documents & Forms chiclet at https://my.ncssm.edu. It is your responsibility to be familiar with these policies.
- Academic Honesty
- Laptop Computers and Electronic Devices in the Classroom
- Class Absences and Tardies
- Late and Incomplete Work
- Late Work Due to Excused or Approved Absences
- Relief from Multiple Major Assignments and Tests
Grading
A rant note about grades:
We believe that the over emphasis of grades impedes a student's ability to learn. This is a
school, a place for learning. Please do not let a focus on grades prevent you from focusing
on learning. If you learn and work hard, your grade will take care of itself.
"I have never let my schooling interfere with my education." - Mark Twain
Grading: Here is a typical grading scale. The local guide for your section or class will give authoritative details.
- Programs: 70%. If the instructor decides to give quizzes, he may allocate 10% of this grade to a quiz grade so it would be 40% programs, 10% quizzes. This will be announced near the beginning of the term. Programs are evaluated with the Five Point Scale described under the Course Expectations subheading in the navigation bar. This will give you a letter programming grade we will reconvert into a number and fold into your final average.
- Final Project 20% The midterm test will take the form of a lab practical.
- Class Commitment: 10%
Our basic scale is a 90-80-70 scale; this is a lower bound and your grade might be higher. If you end up in the top 30% of a letter's numerical range, you get a + and in the bottom 30% you get a -.