Course staff will continuously add to this page as you all ask questions about the project! If you have a question that isn’t answered here, ask in lab, OH, or on Ed!
Setup #
I’m getting errors with imports e.g. Cannot resolve symbol 'spark'
, but already selected the library-fa22 files in IntelliJ. #
Per the spec: You should also go to the library-fa22
folder and run git pull
to make sure you have all the library
files you’ll need for this project. When adding libraries to your project, select ALL libraries in the library-fa22
directory (or, just import the directory as a whole).
You may need to select all the .jar
files individually when importing (don’t just select the entire folder).
When I run main, I get a bunch of red lines as output, is something wrong? #
Probably not—as long as the output says you successfully started the server, everything is working as expected.
Getting Started #
How can I test the server component? #
The best way is to simply make a small change, load the server, and see what happens when you press the button on the website. If you have having issues with making the strings, consider printing them out in your “handle” methods.
How should I account for if one year is absent in plus and divide? #
For plus
, just keep the fist year (basically add 0 to it). For divide
, ignore the year (it should not be in your
output).
All my methods in NGramMap are getting really long and tough to debug, what should I do? #
According to the spec, most of the work in this class should be done in the constructor. That means your job in the
constructor is to parse the datafiles and get them into a nice form such that completing all the other methods will be
easy. This class should remind you of PercolationStats
in hw2. The constructor does a lot of work and the methods are
relatively simple in comparison.
Also, don’t forget to take advantage of abstractions. Remember the plus
and divide
methods you wrote for
a TimeSeries
? You might find some use for them here. If you ever find yourself iterating through the entries of
a TimeSeries
, ask youself if there is an easier way.
Common Exceptions #
Why do I receive a NumberFormatException
when parsing a string to an int? #
Integers can only be so large/small in Java due to their underlying bit representation (you’ll learn more about this in
61C!) If your string represents a number outside the valid integer range, a NumberFormatException
is thrown. If you
anticipate storing large numbers, it may be better to use a Double
instead, which can store a wider range of values.
Replication of AG Test manually do not give the same results/expectations as AG gives, what is the problem? #
This might be related to edge cases. The datasets might not match so the AG expectation and local results might not match.
Why do I get randomizedTest timeout errors while everything looks right? #
Check your plus
and divideBy
methods. See if you have a nested for loop. You don’t need to have 2 for statements to
have a nested for loop. Think about how you get years
(by using which method) and see if you are calling any
method on top of that method to get
the specific year.
Some other possible errors and reminders: #
- Bear in mind there is no complexity in handler methods. The complexity relis on
NGramMap
. Also remember to use correct method on yourNGramMap
. - If you are seeing issues in handler methods, check formatting!
- Timeout might also be related to making many calls to
weightHistory
which is an expensive operation. You can take advantage ofweightHistory(word, startYear, endYear)
.