Resources
It is difficult to learn a new skill, such as programming. To help you on your programming journey, we have made many resources accessible for you. This is a guide to give you some ideas on how to use them! This page contains tips and information about the many resources we provide for you to get help in the class when you need it. Regardless of if you're new to programming or have some experience, all of these resources can be helpful for you!
If there is any resource you would like to see us create, feel free to fill out this request form! Do note that filling this form out is not a guarantee that we will create that resource.
Table of Contents
- Weekly Checklists
- Course Staff
- Message Board
- Hours
- FAQ
- Programming Resources
- Computer Science Major
- Miscellaneous
Weekly Checklists
This quarter, we're creating weekly checklists, that have: (1) a weekly schedule of the course, (2) recommended ways to spread coursework, (3) optional enriching experiences, and (4) required actions for the course. These are meant to help you stay on track in what can often be a fast-paced course.
- Week 9 Checklist
- Week 8 Checklist
- Week 6 Checklist
- Week 5 Checklist
- Week 4 Checklist
- Week 3 Checklist
- Week 2 Checklist
- Week 1 Checklist
Note: You must be logged into your UW G Suite to access the checklists. If you are having difficulty accessing the Google Form, try following these instructions.
Course Staff
The course staff is here to help you! We are always happy to help explain concepts or answer questions about the course. Here are some ways that you can get help from a member of the course staff:
- Email: see the Course Staff Page for email addresses.
- Message Board: We regularly check the ed message board and try to answer questions promptly
- Omars's Coffee Hours: MW 1:15 - 2:15 PM PDT
- Support Hours: The TAs staff support hours nearly every day of the week (see the schedule)
Message Board
This is where you can ask more specific questions about the homework spec or when TAs aren't holding support hours. Other students, TAs, and Miya monitor this board so you can potentially get help more quickly this way. You can access the Ed message board here.
Please do NOT post the code to solve a homework assignment (in whole or in part) on the class discussion board publicly, ever, for any reason. This includes posting partial code in progress in order to ask what is wrong with it. Also please do not provide highly detailed English descriptions of your solution to an assignment, such as describing exactly what methods, parameters, and loops you used to solve it. It is, however, acceptable and encouraged to discuss homework ideas in general terms.
If you do post solution code publicly, this will be considered a violation of the course academic integrity policy and may lead to punishment as outlined by that policy. If you need help on your program, please seek other means of help rather than posting your code. For example, if you want to show your code to a TA or instructor, please bring it to them in person at their hours instead. If you must post code on the message board, please make it a private post.
Hours
Instructor Coffee Hours
You can ask questions about the course material and assignments, but you can also engage in informal conversations with your instructors to help establish a connection -- which will help you should you need references or recommendations for jobs or school!
Never been to an instructor's hours before? When attending hours with instructors, make sure to first introduce yourself! You can stop by to simply introduce yourself without staying long or you can stay and chat. Here's a list of things most instructors are happy to talk about:
- Course material
- Assignments
- Career
- Research
- College
- Other course suggestions
- Suggestions for additional learning (i.e., things you can do outside the classroom)
Here are some things I personally enjoy talking about:
- Life
- Music
- Video Games
- CS Education
- Programming Languages
TA Support Hours
TAs are a wonderful resource and support system -- use them often and wisely. There are three main uses of attending TA hours:
With a Question
Your question must be clear and specific -- for example, saying "I need help" is not a question, instead say "What is this part of the assignment is asking me to do?" or "I'm getting a an out of bounds error. I've narrowed it down to these three lines of code."With a Misunderstanding
Not sure you understand a concept from class? Ask to talk to us about it! We'll do our best to try to help you understand it.When Stuck
Tell us what you are confused about and what you've tried. Don't know where to start? Tell us what you've brainstormed. Code isn't working? Tell us what you've done to debug.
here are some good ways of using support hours
- We recommend having a TA teach you how to use the debugger tool in your IDE here. It can be an incredibly valuable tool. jGRASP's debugging tool is prime for pinpointing where things are going wrong in your program
- If you find a section problem related to the homework material that you are unable to figure out on your own, this is a great thing to work with a TA on in great detail
- Asking the TA to give you a mini-lecture on a concept or example you didn't quite get from lecture/section. This is another area where TAs will talk as in depth as the want about the material
- Here are a couple examples of good hours questions:
- "My code isn't working. Can you show me how to use the debugger so I can figure this out?"
- "I was debugging my code and for some reason even though I passed the variable as a parameter, the value wasn't updated in main. Do you know why that is?"
- "I don't understand what Omar meant when he said X is bad style. Can you explain?"
here are some bad ways of using support hours
- Expecting the TA to point out exactly which lines of code are broken and/or how. The TAs are happy to show you debugging strategies and help you step through your code, but you should be deciding what changes to make
- Asking a TA whether or not something will be a deduction. TAs will not pre-grade your take-home assessment. You can ask general questions and discuss pros and cons of a certain approach, but how you solve the problem is ultimately your decision. If you want insight into how your assessment will be graded, you can consult the generic rubric in the syllabus
- Here are a couple examples of bad hours questions:
- "My code is broken. Please tell me the line of code I have to change to make it work."
- "Will doing X on my take-home assessment result in a worse grade?"
FAQ
What should I do if I do not understand a concept from lecture/ have a question about content from lecture?
- Review lecture:
Often, reading the textbook is a great supplement for lecture! Completing similar problems on practiceIt can also help you practice and clarify concepts from lecture! - Ask a question: You can search the Ed message board and lecture megathreads for a similar question, or ask a question yourself! This can be anonymous! You can also reach out to your TA by email. We are here to help you and love answering your questions, it's why we do what we do! Lastly, you can also attend ANY TA's support hours! We are all here to help you. If you have a question at a time your TA isn't hosting support hours, you are more than welcome to hop into anyone's support hours.
What should I do if I am having trouble on a checkpoint?
- Review section material: Often, section is geared towards revealing helpful insight to checkpoints and assessments. Make sure to attend section! We will often post clarifying videos going over section problems in detail. Watching these videos and making sure you understand the content should be helpful for checkpoints! Lastly, the section cheat sheet is meant to give a short recap of the section. It is a helpful tool for a quick refresher!
- Ask a question: You can search the Ed message board and lecture megathreads for a similar question, or ask a question yourself! This can be anonymous! You can also reach out to your TA by email. We are here to help you and love answering your questions, it's why we do what we do! Lastly, you can also attend ANY TA's support hours! We are all here to help you. If you have a question at a time your TA isn't hosting support hours, you are more than welcome to hop into anyone's support hours.
What should I do if I am having trouble on an assessment?
- Review section material: Often, section is geared towards revealing helpful insight to checkpoints and assessments. Make sure to attend section! We will often post clarifying videos going over section problems in detail. Watching these videos and making sure you understand the content should be helpful for checkpoints! Lastly, the section cheat sheet is meant to give a short recap of the section. It is a helpful tool for a quick refresher!
- Understand/ complete the checkpoint: Checkpoints are designed to give you practice for important concepts on the assessment. Try to complete the checkpoint prior to the assessment, and try to make the connection of what the checkpoint reveals about the assessment!
- Ask a question: You can search the Ed message board and lecture megathreads for a similar question, or ask a question yourself! This can be anonymous! You can also reach out to your TA by email. We are here to help you and love answering your questions, it's why we do what we do! Lastly, you can also attend ANY TA's support hours! We are all here to help you. If you have a question at a time your TA isn't hosting support hours, you are more than welcome to hop into anyone's support hours.
How can I check my work on assessments?
- Debugging tips:
- Developing the program in steps can ensure that each individual part of the whole works. This allows you to break up a big problem into smaller subproblems that are easier to debug. Alternatively, if you have a complete code that is not working, you can debug by commenting out chunks of code, to see where things stray.
- You can use print statements to check the output of various parts of your program. Thi can reveal where things start to stray.
- A very helpful tool can be the debugger in JGrasp. Another helpful debugging tool is the Waterloo Java Visualizer, which draws graphical representations of what is happening in your code.
- Testing behavior: Some case tests will be available on Ed. It is a good idea to make sure your code passes these tests. To check your code passes these tests, copy and paste the code you developed in jGrasp into Ed and press the "mark" button. You will not get marked down for marking multiple times, we will always grade your latest submission. After your code passes the tests on Ed, make sure your code performs correctly in all the cases mentioned in the spec. Oftentimes, these will be harder cases such as case sensitivity, and other cases that test special cases.
- Code Quality: The Code Quality Guide is meant to give you insight on the guidelines we expect the code you write to meet. As we build on material, our expectation will grow. It may be helpful to identify the new expectations every week. The style sheet provided in the section slides is meant to identify some key new code quality expectations. We also have tools to help you identify potential code quality isues, such as the indenter tool and the code quality checker. However, passing the code quality checker does not guarantee that your code has no code quality issues; it is a good signal that you are on the right track though!
A lot of these say to ask a question, how can I ask a meaningful question that will help me learn?
Reflect on the problem: Before you go to ask a TA for help (whether in support hours, email, or ed) it will be helpful to reflect on the following:
- What solutions have you already tried?
- What debugging steps have you already taken?
- What answer have you already seen or heard, and how did it help (or not)?
- [If applicable] What part of the assignment spec or syllabus applies to this question?
- What did you want or expect to see? How was this different from what you actually saw?
However, if the problem persists, communicate about your reflecting! When you go to ask a question on Ed, a template with these questions will pop-up. Filling out this template will ensure the TA's have enough substance to give a meaningful and specific response. However, if you are not posting on Ed, please make sure to still communicate some of your answers to these questions. (You do not need to answer all of these questions).
"unable to encode text using charset us-ascii" Errors
Some users who have their OS configured with a non-English primary language cannot properly see the compiler errors in jGRASP. To fix this problem, follow these steps in jGRASP.
- Click "Settings" -> "Compiler Settings" -> "Workspace".
- In the settings box that pops up, click the "Flags / Args" tab (in the lower row of tabs).
- Then, click the black "button" under "FLAGS or ARGS" and next to "Compile".
- In the text box that becomes available type in -J-Duser.language=en and click "OK".
Some Windows users who have their OS configured with a non-English primary language encounter an "unable to encode text using charset us-ascii" error when closing jGRASP. This seems to happen after opening and closing a file whose path contains non-English characters. Until this bug is fixed in jGRASP, we recommend only storing your Java files in folders with English names. Sorry about that!
Once jGRASP has seen a file with a non-English path, it will remember it, even if you've renamed the folder. To make it forget about the old path and stop displaying this error message, you'll need to delete your jGRASP workspace and create a new default one. Before doing this, make sure you know where on your computer your Java code is saved, because jGRASP will forget which files and folders you have open.
- Make sure jGRASP is closed.
- Open C:\Users\YOUR_USERNAME\ in Windows Explorer and delete the folder named .grasp_settings.
- Re-open jGRASP.
This will reset jGRASP back to its default settings, making it forget the old filename.
Programming Resources
- Course Software
- Java API documentation (a list of all Java classes, packages, and methods)
- Java tutorial by Sun Microsystems.
- Java Language Specification (formal definition of the language).
- CodingBat (a useful site full of Java and Python practice problems)
Computer Science Major
- University of Washington - Why Choose CSE?
- How to meet with a CS undergraduate advisor
- information about internships
- nonmajors courses offered by CSE (see especially CSE373 and CSE374)
- ACM: Association for Computing Machinery (the main CSE student organization)
- ACM-W (focuses on diversity and women's issues in computing)