Syllabus
Welcome!
This is an advanced programming class in Java. We will explore important concepts around program design, coding, testing, debugging, and using java features necessary for real world business applicaitons. The focus of the class is on more advanced topics such as collections, file reading and writing, exception handling, and building database driven websites with Java using JSPs and servlets. We will also learn source code management using git
.
Instructor Information
Kari Schumacher (she/her)
- Office Hours: Book a Student Support meeting with me here. If none of the time listed work for your schedule, message me in Slack and share a couple days/times that work for you. Please don't be shy about meeting; that's what I'm here for!
- Phone 608-616-1050
- Email kkschumacher@madisoncollege.edu
I've been teaching at Madison College for about eight years. I began my professional career as a Graphic Designer but was laid off during the recession of 2008. At that time, I chose to go back to school and dive into the field of programming. After obtaining my associates at Madison College, I worked as a Java Developer in Madison before coming back to Madison College to teach. More recently, I earned my MS in Information Technology.
When I'm not teaching or learning I love to get outside. I am working on growing an edible landscape and have over 10 types of fruit on my property!
I also love hanging out with my fur babies sand reading.
I'm always interested in good book recommendations!
Expectations
My Commitment to You
My top priority is your success. You can expect:
-
Challenging Learning Environment with Support My top priority is your success, and to ensure that, you can expect a learning environment that challenges you while also providing readily available and freely given support. This class is a safe space to make mistakes.
-
Meaningful Work and Growth-Oriented Grading Expect work that is meaningful and not just "busy work," along with grading practices that prioritize your growth and improvement.
-
Timely and Actionable Communication Count on communication and feedback that are timely, meaningful, and actionable. Assignment feedback will be provided within one week, usually even sooner!
-
Transparent Course Management Experience transparency and openness in how the course is run, including clear instructions on what you need to do and when.
-
Collaboration and Feedback: I welcome your ideas about the course and regularly solicit feedback that is taken seriously through a continuous improvement process.
-
Respect for You: Above all, respect -- for you as a learner, as an adult, and as a human.
My Expectation of You
On your end, your success in the course depends on four things:
-
Active engagement during class time (or online). All the available research on learning says that the best way to learn is to be an active participant in the process. Students who approach the class with a passive mindset typically struggle, and often fail. Those who approach it with an active mindset, on the other hand, often surprise themselves with how much and how well they learn. Make it a priority to be involved!
-
Asking questions. The material in Advanced Java can be challenging, and it is 100% certain you will be lost, confused, and/or stuck at times. This is not a defect -- it means you're doing the course right. When it happens, don't wait for things to make sense on their own: Ask questions of me and your classmates and take action to make sense of the material. This is what the
#help
channel in Slack is for! -
Good management of time, tasks, and information. Understanding the material won't help you if you procrastinate, skip announcements, or don't use a calendar. All course information will be clearly laid out for you, but it's up to you to import that information into your own lives and act on it. If you can commit to these three things, then I have every expectation that you'll succeed in the course.
-
Honest and authentic work. If you use anybody else's code, document it! There is a place each week to list any resources you may have used during your homework and projects. This includes other students, online resources, or anything that helps you along the way! Anyone caught plagiarizing someone else’s work will be at risk of failing the plagiarized assignment or course. Please see the Student Academic Integrity Policy for more information.
Course Information
Course Number | 10-152-112 |
Credits | 3 |
Pre-requisite | A "C" or better in Java Programming 10-152-111 or consent of instructor |
Course Website | https://madison-college-it-curriculum.github.io/AdvancedJavaProgramming/ Almost all of our course content is hosted on the Course Website. This includes this syllabus, course calendar, lecture notes, demo videos, lab and project instructions, etc. |
Backup Requirements | This could be an external USB hard drive (USB 3.0 and SSD are highly recommended) or a service such as One Drive, Google Drive, Dropbox, etc. |
Time Commitment | 3 credits = ~9 hours each week. This includes watching videos or attending Live meetings. |
Textbooks
Core Servlets & JavaServer Pages, 2nd Edition.
- Use your Madison College id and password to login.
- If the link does not work, you can navigate to the book this way:
- Madison College Home > Current Students > Library > Browse Databases by A to Z list > O'Reilly for Higher Education > Search for "Core Servlets & JavaServer Pages"
- A hard-copy is also available in the Madison College Book Store.
Head First Java, 3rd Edition
Head First Java, 3rd Edition, by Kathy Sierra & Bert Bates.
- We started using the 3rd Edition in the Summer 2023 Java Programing Course, if you have the 2nd Edition, that is ok!
- Use your Madison College id and password to login.
- If the link does not work, you can navigate to the book this way:
- Madison College Home > Current Students > Library > Browse Databases by A to Z list > O'Reilly for Higher Education > Search for "Head First Java"
- A hard-copy is also available in the Madison College Book Store.
Course Competencies
Competencies in the course are what you will be able to do effectively at the end of the semester. Please visit the Learning Index page to see what assignments focus on a particular competency.
Expand each heading to see more details about the competency.
1. Refine debugging and problem-solving skills.
-
Debug/Problem Solve
-
Identify and diagnose errors in Java code using logging tools and debugging statements.
- Identify and diagnose different types of errors, including complier, runtime, and syntax errors.
- Use test-driven development and unit tests to write code.
- Analyze Java stack traces and log files effectively to pinpoint the origin of an error.
- Research and implement effective solutions to coding problems.
- Discern when and how to seek assistance in problem-solving scenarios.
- Break down complex coding problems into manageable components.
- Plan and document application design prior to implementation.
2. Use programming principles for clean, efficient, and maintainable code.
-
Code Quality
-
Apply common Java principles to improve code quality.
- Trace the execution flow of Java code, including the order of method calls.
- Explain the decision-making process when designing and implementing Java programs.
- Use correct Java terminology when explaining code.
- Use properties files to eliminate hard-coded values.
- Use correct JavaDoc comments to document classes, methods, and variables, including their purpose, parameters, return values, and usage.
- Explain the purpose of Object-Oriented Programming (OOP) concepts.
3. Administrate developer environment.
-
Admin Environment
-
Identify the location and purpose of important files in an Apache Tomcat server.
- Navigate the basic file structure and architecture of a Java application.
- Analyze Apache Tomcat log files for debugging purposes.
- Demonstrate an understanding of the deployment process.
- Build and deploy java applications using the Apache Ant build tool.
- Use the command line to perform tasks as needed during the development process.
- Create and modify scripts to perform administrative tasks.
4. Use git and GitHub for version control.
-
Git/GitHub
-
Create meaningful, atomic commit messages during the development process.
- Maintain code in GitHub by committing, pushing, tagging, and creating issues.
- Collaborate efficiently with other team members using git pull and push.
- Communicate within the GitHub environment using issues.
- Explain how the GitHub version control system functions.
- Troubleshoot common version control issues.
5. Use Java IO classes to read and write data to files.
-
Java IO
-
Understand the basics of Java IO and the different types of streams, including input and output streams.
- Demonstrate the ability to read and write data to files using IO classes and methods.
- Demonstrate how to handle errors and exceptions that may occur during file IO operations, including file not found errors, permission errors, and other common issues.
- Implement the best practices for IO in Java, including how to use buffering to optimize performance, and how to properly close file streams to avoid resource leaks.
6. Apply exception handling in a Java application.
-
Exception Handling
-
Identify the correct exceptions for a class.
- Create meaningful error messages that help developers identify and fix problems.
- Implement try-catch-finally and try-with-resources blocks on appropriate Java classes to handle exceptions.
- Demonstrate the appropriate time and location to throw an exception.
- Create nested exceptions when appropriate.
- Log any necessary exceptions for debugging and user experience.
7. Use the Collections interface to manipulate data structures.
7.Collections
- Examine the Collections interface and associated classes, methods, and properties in the Java API.
- Identify the appropriate concrete implementation of the Collection interface based on the application needs and requirements.
- Use appropriate Collection methods in java applications.
- Explain the structure of the Collection interface and its concrete classes.
8. Build Java web applications.
-
Java Web Apps
-
Explain the lifecycle of a Servlet.
- Implement Servlets to handle different types of requests, such as GET and POST, and perform specific actions.
- Analyze and troubleshoot Servlet-related issues.
- Build Java Server Pages (JSP) as a presentation layer technology.
- Use Expression Language (EL) for accessing and manipulating data in JSP.
- Use the JSP Standard Tag Library (JSTL) to simplify JSP development.
- Handle and process form submission in a Java web application.
9. Implement the model view controller pattern in a Java Application.
- MVC Pattern
Not introduced until unit 3.
- Identify the different components of the MVC pattern.
- Describe the concept of the MVC pattern and its benefits.
- Explain the role of each component in the MVC pattern and how they interact with each other to handle user input, manage data, and display information to the user.
- Implement controllers in Java that handle requests, update the model, and manage the flow of information between the model and view.
- Implement views as JSP pages that integrate with controllers (Servlets) to dynamically generate content.
- Implement models as business logic or JavaBeans.
10. Use a database in a web application.
- Database
Not introduced until unit 4.
- Implement database connectivity in a web application to read data from a database using SQL queries.
- Write data to a database in web application using appropriate SQL statements.
- Use prepared statements in a database query to enhance security and efficiency.
- Identify and fix common database issues, such as connectivity or SQL errors.
Technology Requirements
This course requires a PC or Mac with reliable Internet access. For technical help or troubleshooting, phone (608) 243-4444 or toll-free (866) 277-4445.
We will use our new Learning Management System, Brightspace, for this class. You can access it through https://learn.madisoncollege.edu.
For student support information regarding Brightspace, visit Brightspace Resources
Madison College does its best to keep Brightspace up and running. If you cannot access the course, contact our Student Technology Help here: Student Technology Helpdesk.
If you do not have a computer or reliable Internet, please request a laptop or hot spot loan prior to the start of class at: Technology Access Program. Be sure to let them know you are an IT student so that you receive equipment appropriate for our program.
Software and Applications
We'll be using a variety of software this semester. While it may seem like a lot at first glance, they all play an important role in your learning journey and I promise they will become trusty friends in a short time, if they aren't already!
Communication Tools
Purpose: Meet virtually with instructor.
- Office Hours
- Code Reviews
Purpose: Class communication and collaboration, course announcements, reminders, tip and tricks. This is the place for us all to connect!
90 Day Limit
We will be using the free Slack plan which only retains messages for 90 days. This should not create an issue as we will be in Week 12 when old messages fall off. However, if you wish to save messages, please plan accordingly. I will send out a reminder we when we are close to the 90-day mark.
- We will use Slack for all communication outside of live meetings in MS Teams.
- I will check Slack regularly and will typically respond to communications within 24 hours.
- Be sure to set up notifications and check Slack regularly (I recommend daily, if you can) so you do not miss important class information.
- You can learn more about Slack here.
- Slack public channels, such as
#help
, should be used for course-related questions and tips so that everyone can participate in, and benefit from, the discussion. Slack is one of the first places to look for answers and ask for help. I love to see students helping one another; I think this is how we learn best, so please ask and answer questions in the Slack public channels as much as possible. I will, of course, jump in as needed. - Slack direct messages, DMs, should be used for topics of a more personal nature or setting up a time to meet.
Purpose: Tracking completed work; online checkpoints.
Any emails sent from the Brightspace system will go to your Madison College email. If you are not in the habit of checking your Madison College email account daily, please forward your college email to your preferred email address.
Purpose: GitHub is used for all source code management and submitting work for feedback and receiving feedback. All code that we write will be versioned into GitHub for easy access and easy comparison of changes over time.
- The GitHub repository for demo code written in this class will be provided by the instructor.
- GitHub A GitHub account is required.
Development Environment
Purpose: Linux Coding environment.
- A codespace is a development environment that's hosted in the cloud..
- Each codespace you create is hosted by GitHub in a Docker container, running on a virtual machine.
- The codespace development environment is created from an Ubuntu Linux image.
- This environment will be set up for you, all you need to do is use it!
Purpose: Writing and editing code.
- Codespaces is defaulted to use VS Code as its editor.
Purpose: Git is our Source Code Management (SCM) software.
Java Tools
Purpose: Allows us to run our Java programs and provides us with lots of classes to use so we don't have to write everything from scratch!
Purpose: Oracle web site for the java api documentation: http://docs.oracle.com/javase/11/docs/api/
Purpose A basic web server that contains the full Apache implementation of servlets and JSP, allowing us to run java web applications.
Coursework
Each week begins on a Monday and ends on a Sunday. Watch for a weekly announcement in Slack on Mondays. The announcement will provide a short overview of the upcoming week, reminders about what's due, and tips to help you succeed.
Besides the weekly assigned reading and videos located in the calendar you will be completing the following work this semester.
Weekly Practice
Completion of the labs and checkpoints, also known as "weekly work" provides practice of new coding techniques/topics and is critical for success in the course. Just as musicians and athletes spend a lot of time practicing for their performances, consider weekly work as practice for the projects. Because these tasks are intended to help you learn the concepts presented in this course, mistakes are expected as you learn!
Weekly work (Labs and Weekly Checkpoints) are best by by 11:59 p.m. on Sunday unless otherwise specified. Late work is accepted, but you are encouraged to complete it on or before the specified date to keep on task.
Practice | Description |
---|---|
Weekly Labs | These are generally smaller coding tasks that illustrate one or two key concepts and will provide you with practice with, and a working example of, nearly every concept required in the projects. |
Weekly Checkpoints | Each week you can test your understanding of the weekly topics with a short "checkpoint" in Brightspace. They are not timed and can be taken an unlimited amount of times. They are located in Brightspace, under the Weekly Checkpoint navigation. |
Projects
There will be four projects for you to demonstrate your proficiency with the topics covered in this class. Most of the projects are cumulative, meaning that they build on the previous project. They are meant to be be challenging. Unlike the labs, they require more critical-thinking skills to figure out all the steps and solutions needed to meet the project requirements.
Projects are best by by 11:59 p.m. on Friday unless otherwise specified. Late work is accepted, but you are encouraged to complete it on or before the specified date to keep on task.
Projects must rely on coded solutions that have been covered in the class material, unless otherwise specified. If the coded solution uses concepts not covered in class, you are required to do a code review. This review must include a detailed explanation of your coding choices and rationale for employing a solution beyond the scope of the class material.
Warning
To be successful in this course, you must keep up and complete projects on time. If you are having trouble completing work on time, please let me know so we can work together to get you back on track.
Project Part | Description |
---|---|
Project Plan | Each project includes a plan prior to coding. |
Project Code & Reflection | All four projects must produce code that pass all provided tests, produces the correct output, and adhere to coding standards and java best practices. A thorough reflection on the coding process and learning is required with the project code. |
Code Review | Code reviews are a common practice in software development. It is a way of explaining your code to your development team to help identify issues in code quality and ensure it meets all coding standards and project requirements. In this class, you can complete a code review by scheduling a MS Teams meeting with me, or you may choose to record a video demonstrating the same. I promise meeting with me is not meant to be scary or intimidating; think about it as a friendly meeting to discuss all your hard work! |
See Grading Bundles for how many projects, plans, and code reviews you need to complete for each letter grade.
Challenges
There are eleven opportunities for you to build on your Java knowledge through three research-based and five coding challenges. Plan accordingly as you are required to complete at least one challenge to pass this course.
Challenges are best by by 11:59 p.m. on Sunday unless otherwise specified. Late work is accepted, but you are encouraged to complete it on or before the specified date to keep on task.
See the Challenges Overview Page for a list of all challenge opportunities.
See Grading Bundles for how many challenges you need to complete for each letter grade.
Resubmissions
You are encouraged to make improvements and corrections on all coursework. You may resubmit all work to receive your desired mark.
Remember, you are LEARNING, mistakes or missteps along they way are expected!
Grading
The way Advanced Java is graded is different from what you might have experienced in other courses.
No points!
In this class, I have eliminated the concept of points-based grading. Research shows that such systems can hinder learning and motivation. My focus here is on nurturing your development as a developer throughout the semester, without the distractions of points or conventional grades. Consequently, you will not receive traditional point values for coursework. Instead, you will receive comprehensive feedback to help you improve your learning.
Feedback
Rather than assigning point values or letter grades to your coursework, you will see either "Met" or "Not Yet" in Brightspace.
"Met" Status
This designation signifies that your work meets or exceeds the assignment requirements. It demonstrates a clear understanding of the concepts through correct, independent, and well-explained solutions. While some revision or clarification may be necessary, there are no significant gaps or errors in your work.
"Not Yet" Status
This label indicates that your work has not yet met the assignment requirements. It reflects a partial understanding of the concepts, with partial or significant gaps remaining. Rework or revision is required to move to a "Met" status.
I will provide detailed feedback on your work, outlining the steps required to elevate your work to a "Met" status.
Feedback
I believe prompt and regular feedback on your work is essential to your success in this class. Receiving feedback on that work is important to help you understand whether you appear to be approaching "Met" status with a concept or if you need more practice. I will do my best to provide feedback within one week of the submission. Often, you will receive feedback much quicker than that, however if work is submitted late, I cannot guarantee feedback will be as timely or as thorough.
Opportunities for Revisions
Learning often involves learning from mistakes, and in this course, you will have the chance to redo all assignments to ensure you achieve the "Met" status.
Grade Bundles
Semester-End Grading
To receive a passing grade in this course, you must have achieved the "Met" status for specific coursework a set number of times. For example, to be considered for an A grade, you must have completed 4 Project Plans at a "Met" status a total of four times.
NOTE: A, B, and C Bundles indicate assignments completed at a "Met" status.
Assignment | Total in Course | A Bundle | B Bundle | C Bundle |
---|---|---|---|---|
Project Plans | 4 | 4 | 3 | 2 |
Project Code | 4 | 4 | 4 | 4 |
Code Reviews | 4 | 2 | 2 | 2 |
Challenges | 11 | 3 | 2 | 1 |
AB or BC Grades
It's important to note that learning experiences can vary among individuals, and not everyone neatly fits into predefined categories. If your performance falls between the outlined criteria above, you may earn an AB or BC in the course. Furthermore, I welcome discussions at the end of the semester to engage in a thoughtful evaluation of your learning and what final grade best represents your progress with the course. That said, all four projects must be completed and working correctly to pass the course.
My Grades in Brightspace
You can check the status of the total number of Met assignments at the top of the My Grades link in Brightspace.
Due Dates
Running Late...it's ok! I believe in LIFElines not DEADlines.
Best By Dates
It is best to turn work in weekly. Turning in work each week allows you to receive timely feedback from me and gives you time to resubmit if you need to make corrections. Turing in the bulk of the unit work in at the end of the unit will result in less feedback from the instructor.
Need More Time? If you need more time after the unit due date to complete your work, please let me know. We can work together to create a schedule that work for both the course and your current circumstance.
Unit Due Dates
Unit 1: Friday, February 21st at 11:59 PM
Unit 2: Friday, March 14th at 11:59 PM
Unit 3: Friday, April 18th at 11:59 PM
Unit 4: Friday, May 9th at 11:59 PM
AI Policy
Please see the AI Policy for details on the proper use of AI tools in this class.
Withdrawals
If you are considering withdrawing from the course, please chat with me before actually dropping the class!
If a situation arises that prevents you from successfully completing this course, it is your responsibility to formally withdraw from this course. You may withdraw from class until 90% complete. After that time, I am responsible for giving you a letter grade.
If you need to withdrawal from the course, go to myMadisonCollege and click on the "Classes" card. Then, select "Drop Classes" from the left navigation. To calculate a possible refund, select the "What-If Refund Calculator" in the left navigation.
Madison College reserves the right to drop you from the course if you do not participate in class the first two weeks.
Equity and Inclusion Statement
This class will be a safe and affirming learning space for each of you, regardless of age, race, ethnicity, citizen status, gender, sex, sexual orientation, parental status, religion, ability, or socioeconomic status. As an instructor, I pledge to respect you based upon these factors, including the use of preferred names and pronouns, and encourage open communication. You are welcome and encouraged to share any/all viewpoints relevant to course material, and respectful, relevant debate is encouraged, provided all materials for the day can still be covered.
Accessibility Statement
Madison College welcomes students with disabilities into the College’s educational programs. Every Madison College campus has Disability Resource Services available for students with disabilities. The Disability Resource Services website provides specific information related to accommodations for disability-related barriers. For further information, please visit https://madisoncollege.edu/disability-resource-services, call 608-246-6716 (Students who are deaf should use relay) or email DRStransition@madisoncollege.edu.
In order to receive consideration for reasonable accommodations for your disability, you must contact the Disability Resource Services office at the campus where you are officially enrolled. If approved for accommodations, Disability Resource Services will provide you with an accommodation plan. Please share your accommodation plan with me and discuss your approved accommodations as early in my class as possible.
If you feel your accommodation needs are not being met, please inform me or Disability Resource Services as soon as possible.
Mental Health Support
As a student you may experience a range of issues that can cause barriers to learning. These might include strained relationships, anxiety, high levels of stress, alcohol/drug concerns, feeling down, or loss of motivation. Learn about the free, confidential mental health services available on campus by calling 608-246-6076 or visiting https://students.madisoncollege.edu/counseling. For after hours mental health emergencies, please call the National Suicide Prevention Hotline at 1-800-273-TALK, 911, Madison College Public Safety 608-243-2222, the Center for Suicide Awareness – text the word “Connect” to 741741, and for Dane County residents, Journey Mental Health Crisis Unit 608-280-2600.
Safe Space for All
Madison College is committed to providing a safe space for all students, employees and staff. Negative attitudes and fear during the COVID-19 pandemic can lead to discrimination against people and communities. Prejudiced behavior violates our values and our policies and should be reported. If you experience or observe harassment or discrimination, Madison College’s Harassment and Discrimination Policy outlines the procedure for filing a complaint. Madison College does not tolerate discrimination of any type. We strive to provide an educational environment free from harassment.
Campus COVID-19 Updates
The safety of the Madison College community is our top priority. I encourage you to stay up to date on COVID-19 protocols found here https://madisoncollege.edu/about/public-information/coronavirus
College Catalog and Student Handbook
Many important MATC policies and guidelines are found on the Madison College website. You are expected to be familiar with such policies and procedures, and are encouraged to review policies as needed during their attendance at MATC.
Madison College Student Support and Counseling Services
Madison College provides a wide variety of services for you, including free counseling.
Madison College Policies
Madison Area Technical College places a high value on the learning experience. As members of the college community, you are obligated to conduct your work with honesty and integrity. Plagiarism and cheating are serious offenses and may be punished by failure on a project, test or assignment, failure in the course, and or expulsion from the college. For more information refer to the "Student Code of Conduct" policy in the student catalog. Please take time to review our Academic IntegrityPolicy.
- Student Rights and Responsibilities http://madisoncollege.edu/student-rights-responsibilities
- Appeals Process http://madisoncollege.edu/appeals-process
Students have the right to know about Madison College including policies, protections, and outcomes. I encourage you to review the policies and guidelines relevant to Madison College students which are found here https://students.madisoncollege.edu/policies. There are also college-wide classroom policies which can be found here https://students.madisoncollege.edu/classroom-policies
Instructor Note
Completing labs, assignments, and projects (from here on referred to generally as "assignments") is an essential part of this course. The more code you write, the better programmer you will be. As you work on assignments, I fully expect that you will have questions and run into problems. While a significant part of programming is debugging problems, sometimes we all get so stuck that we need help. I'll talk more in class about how to problem solve and how to ask for programming help, but for now, know that I strongly encourage you to seek assistance when you need it. I expect that you will post many questions to our Slack #help channel, and I also want you to answer questions posted by your peers. I love to see you all helping one another this way! However, please do not provide answers that essentially give away the entire assignment. Remember that you can also consult with your instructor and IT Guides about any aspect of any assignment.
You should consult with peers in a general way, e.g., how to troubleshoot an error or clarifying wording on an assignment. You can discuss the programs before writing code and assist each other in debugging, but you should write your own code. Should another student or tutor write code, solve the problem as an example, or dictate what should be written on any assignment this would be academic misconduct on the part of both parties.
I reserve the right to change the specifications, requirements, and due dates of course assignments and projects at any time. If any changes occur look for an announcement in Brightspace and/or Slack.