Code Monkey home page Code Monkey logo

cs102's People

Contributors

97x avatar antheajr avatar chippers255 avatar consolelog7 avatar dependabot[bot] avatar dominicdern avatar eldaveo avatar hypno2002 avatar impuse avatar jameshughes89 avatar jdelamer avatar juniebjones4 avatar kellymoylan avatar kurtiscruikshank avatar razki-37 avatar twentylemon avatar veiledtee avatar yaboiadam16 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

cs102's Issues

:mortar_board: :new: Add C++ "aside" covering objects/classes

What

Create an aside (or something similar) covering the creation of classes/objects in C++. The focus will be on headers and the class files.

Why

Will introduce students to another similar language. This shows what is similar/disimilar, which is cool. It will also provide students with some details on C++ for if/when they use it.

Where

After Topic 3.

How

Copy/paste contents from last year's slides.

Additional Notes

Not looking to cover enough details such that they are proficient in C++, but that they are familiar with important concepts that they can go look into if/when they need it.

:telescope: :bug: :mortar_board: :lipstick: Update formatting on `if`/`else` statements

Related Issues or PRs

Related #110 #56

What

As @twentylemon mentioned, it would be best to change the format of if/else lines & braces to match the following.

    if (condition) {
        ...
    } else {
        ...
    }

Why

This is a more typical style.

Where

Everywhere up to and including topic11.rst
Should also be included with formatting.

How

Either setup the formatter #56 or go through each file and change.

Additional Notes

Not needed, but would be a good change.

:telescope: :mortar_board: Add bag idea to early topics

What

Update topics to include reference to bags. This will require making the indexed and sorted lists bags, or at least calling them that.

Why

Lists were replaced with Bags, so bags should be discussed.

Where

I think this will come up only in the first few topics.

:new: :mortar_board: TopicX --- Hashing

What

Add a topic for hashing.

Why

Important topic, but there likely will not be time to cover it. This is fine since it's typically a 2nd year thing, but I'm a big believer of communicating high expectations pedagogy.

Where

Idk where exactly it would fit in best, but probably tack it on at the end.

How

Just make the topic and add it to the repo. Decide on adding it to the index later.

:memo: Add additional emojis for labels

Issues or PRs

Related #28 #83 #81

What

Add additional emojis and update emoji descriptions to be 1:1 with labels.

Why

This lets people self label/tag their issues & PRs mor eeffectively

Where

Changes will need to be made in CONTRUBITING.md's style guide section

:mortar_board: Create an aside for using the debugger

What

Create an aside for a quick introduction to the debugger.

Why

I somewhat talk on it in CS101 (161), but at that point few students are using an IDE. By introducing it to CS102 (162) I know they are using IntelliJ.

A lot of people never take the time to look into using the debugger, so breaking the ice, so to speak, would give them a bit of a heads start.

Where

Not sure yet, but probably somewhere earlier in the course. Perhaps around the testing aside?

How

Things to hit:

  • break points
  • stepping through the program
  • watching variables
  • checking conditions

Check copyright of images

Some of the images I sole from slides that I used back in the day. The textbook that went with the slides does not contain the images in the slides, which makes me think they were added by one of the other instructors back at UWO.

Either way, although they may be fine, will need to actually look into this. Putting this as an issue as a reminder for later.

:telescope: :mortar_board: Make consistent use of the words `item`, `element` and `target`

What

Pick a consistent word for refering to the stuff in the collection and update the content.

Why

As of know I have used the words item, element, and target to refer to the same thing. Perhaps element and target are used in kinda' a different context, but either way, this can be cleaned up.

Where

In .java files (including the javadoc comments) and topic pages.

Add unit tests to `ArrayStack`

After PR #40 is merged, make an aside for Topic 6 on unit tests. Keep them simple since this is the first time they've seen them.

I figure going forward, it will be part of each topic, but I'll make the first one an aside that they are to investigate on their own.

:telescope: :lipstick: :mortar_board: Update `try/catch`

Related Issues or PRs

Noted in #134
Would get fixed through #56

What

Go through the content and make try/catch follow the following format:

    try {
        something;
    } catch (SomeException e) {
        somethingElse;
    }

Why

More typical formatting.

Where

Up to and including topic 12 content. Areas of note would be:

  • playing code (topic 3, 6, 11, 12)
  • all the tests

How

"ctrl-f catch ("

Additional Notes

Would get addressed with #56, but this would make a nice easy and accessible way for someone to contribute.

:memo: :telescope: Add formatter for restructured text files

Related Issues or PRs

Related to #56 and #152

What

Find and add an rst file formatter for the repo.

Why

The Java formatter is working just fine (#56 & #152), but it won't apply to java code within rst files. Further, unfortunately the rst plugin for IntelliJ doesn't add a formatter.

Currently there are settings for a formatter for arbitrary files, but it only allows setting indents and it also doesn't quite seem to work the way you'd expect on rst files.

How

I saw a few formatters out there on github. Look into these and see what can be done. I'm wondering if there is an action for this too.

Additional Notes

Not critical, but nice to have.

:new: :mortar_board: Topic exceptions --- aside on exception's cause

Related Issues or PRs

Related #148

What

Add an aside on exception causes to topic16.

Why

While acknowledging that this is outside the scope of the course, an aside on the topic seems fitting as it would be something to have students be familiar with. The idea being that when they come across them in the future, they're not intimidating.

Where

A new aside, something like topic16-cause.rst

Additional Notes

Perhaps low priority, but good idea nontheless.

:mortar_board: Change recursive binary search recursive calls and param values

Related Issues or PRs

#285

What

Change the recursive binary search method based on @twentylemon's comments on not modifying the params, but change the values in the recursive call's params.

Why

It's cleaner, for lack of a better term.
I suspect this is a consequence of trying to have one return for the non-base case.

Where

Topic20's recursive binary search.
Within the search methods class

:mortar_board: :new: Add C++ "aside" covering static and dynamic arrays

What

Create an aside (or something similar) covering C++ static and dynamic arrays.

Why

Will introduce students to another similar language. This shows what is similar/disimilar, which is cool. It will also provide students with some details on C++ for if/when they use it.

Where

Early in the course. Probably after Topic 2.

How

Copy/paste contents from last year's slides.

Additional Notes

Not looking to cover enough details such that they are proficient in C++, but that they are familiar with important concepts that they can go look into if/when they need it.

:mortar_board: :telescope: Change `EmptyStackException` out for `NoSuchElementException` in for stacks

What

Replace the use of EmptyStackException for NoSuchElementException in the stack interface, implementations, tests, and topic pages.

Why

Looks like EmptyStackException is ancient. I don't believe there is anything intrinsically wrong with using the EmptyStackException, but since there is no EmptyQueueException, I suggest being consistent with the exceptions thrown ๐Ÿ’„. It appears that the exception of choice would be NoSuchElementException.

Where

src/test/java/LinkedStackTest.java
src/test/java/ArrayStackTest.java
src/main/java/ArrayStack.java
src/main/java/LinkedStack.java
/src/site/topic6.rst
src/site/topic8.rst
src/site/topic8-nested.rst
src/site/topic9.rst

How

  • EmptyStackException -> NoSuchElementException
  • Watch for imports
  • Watch for testing code examples catching the exception
  • Also add a string to the exception saying what happened: Popping from an empty stack.

Additional Notes

Not needed, but would be good for consistency.

make the repo contribution friendly

This repo is open source, but there's a few pieces missing to add to bring it up to standard.

overall guidelines

  • add CONTRIBUTING.md
    • this is essentially a readme for people that want to do something for the repo -- be it open an issue, open a pull request, whatever. can also things like code of conduct, links to the course/school. essentially, reading it should convince people either not to contribute since they shouldn't, or contribute in the way we expect
  • add useful labels. each repo starts with a handful, but they may not fit our repo very well.
    • a small set of labels is best, overlapping labels should be avoided (unless orthogonal, like bug and future work)
  • add issue and pull request templates
    • templates help ensure issues/PRs are complete before repo owners read them (either people ignore the template and we immediately close it, or they follow the template and we give it the time of day)
    • can include task lists, which are pretty fancy
  • enhance the readme!

Finally, yeet repo options that are not used. Like projects and wiki. Don't advertise stuff that doesn't exist.

Building guidelines (and a community, even if students don't engage) is effort. Start small and add things as you think of them, don't try to define the whole universe at once. At some point, pulling out what is written for this into a template repo makes a lot of sense, so you can re-use for any number of courses (you can pretty easily update from a template repo as well).

:memo: change good first issue label name

Related Issues or PRs

#85

What

๐Ÿ‘ถ might not be the best for good first issue.

Why

Top of the issues page sometimes writes:

Now, GitHub will help potential first-time contributors discover issues labeled with good first issue --- baby ๐Ÿ‘ถ

"good first issue -- baby" kinda sounds like we're saying "baby" in the derogatory manner.

Where

Issue template, PR template, repository labels.

How

Other emoji options I can thing of, in a rough preference order of mine:

  • ๐Ÿ‘Œ ok_hand
  • โค๏ธ heart
  • ๐Ÿ˜Ž sunglasses
  • โ˜€๏ธ sunny
  • ๐Ÿ†— ok
  • ๐Ÿ˜ heart_eyes
  • ๐Ÿ™Œ raised_hands
  • ๐Ÿฅ‡ 1st_place_medal

Rework maze visualization

As @twentylemon notes, the use of cells is perhaps not as natural.

I may have used pull paths instead of steps, I think it's more akin to how people solve a maze (we don't think of cells, for example). By path I mean all steps taken until an intersection or a dead end, can use a squiggly line, like you would on a real maze. Though, think on it. Can be follow up work. What's there still works, it's just more robotic.

Consider a rework of the visualization.

:mortar_board: Add additional details about `ArrayStack`'s `expandCapacity` to Topic12's aside

Related Issues or PRs

Re #144.

What

Add more details on the ArrayStack's expandCapacity before the details on the more complex ArrayQueue's expandCapacity.

Why

As @twentylemon suggested, it may be easier to start with what issimpler and what we know already before hitting the added complexities.

Where

topic12-expand.rst

Additional Notes

Not a priority as of now, but would defo add value to the content.

:mortar_board: :new: Add C++ "aside" covering pointers, references, address of, dereferencing

What

Create an aside (or something similar) covering C++ pointers, address of, dereference, reference variables, etc.

Why

Will introduce students to another similar language. This shows what is similar/disimilar, which is cool. It will also provide students with some details on C++ for if/when they use it.

Where

Early in the course. Probably after Topic 2.

How

Copy/paste contents from last year's slides.

Additional Notes

Not looking to cover enough details such that they are proficient in C++, but that they are familiar with important concepts that they can go look into if/when they need it.

:new: :mortar_board: Topic16 Aside on `spliterator`

Related Issues or PRs

As mentioned in #190

What

As @twentylemon suggests in #190, add an aside for spliterator which discusses (a) streams, (b) parallel, and (c) a tad functional stuff in high level.

Why

Although these topics are well out of scope for a first year course, being exposed to these important ideas early is only going to be a good thing. I also am a fan of including bigger picture ideas too so students can get a sense of where things will/can go.

Where

Topic 16 on iterators. If the point is streams, parallel, and functional programming, this may seem off, but iterator -> spliterator -> these ideas is a great segue.

:mortar_board: :eyes: :new: Add new queue example to replace rotating cipher

Related Issues or PRs

Related #100

What

Think of a better example for for the queue. Move the current rotating cipher example to an aside for Topic 10.

Why

As @twentylemon notes, the example seems forced, which I agree with. Although it does serve its purpose, it may not be as obvious an example. If the example is more natural, it will be easier to understand.

Where

Topic10.rst
A new Toipic10 aside, likely Topic10-cipher.rst

How

Could do a simple simulation example where we simulate wait times for checking out at a grocery store depending on the number of cashier.

Additional Notes

Probably a lower priority issue since the rotating cipher isn't horrible.

:telescope: :mortar_board: Call `size()` where we can

Related Issues or PRs

As mentioned in #168

What

Go through implementations to check for places where method calls from the interface can replace fields. This may require changes in topic files too.

Why

Consistency, and as @twentylemon said program to the interface as much as possible!

Where

.java files and probably some topics pages.

:mortar_board: Topic19 Improve Towers of Hanoi explination

Related Issues or PRs

#269

What

Add more detail/improve the Towers of Hanoi explination in Topic19.

Why

There is nothing wrong with the current explination, but it feels like it could be better.

Where

Topic19

How

Not quite sure. As @twentylemon suggested in #269, pseudocode may be a good way. If this route is taken, perhaps an aside would be best since Towers of Hanoi are not super important for them to know at this stage, and adding more details about it to the main topic page may give the wrong impression. An aside will give a chance to really dig into extra details too.

It may only need some time to settle, and then after a bit, a re-look at it may make helpful changes obvious.

:art: :telescope: :mortar_board: Change count -> size in the `LinkedStack` and `LinkedQueue` example images

What

Change "count" to "size" in various figures.

Why

I do not like the use of count, especiallu since I refer to it as size in the content and code.

Where

topic8.rst
src/site/img/linkedstack0.png
src/site/img/linkedstack1.png
src/site/img/linkedstack2.png
src/site/img/linkedstack3.png

topic12.rst
src/site/img/linkedqueue0.png
src/site/img/linkedqueue1.png
src/site/img/linkedqueue2.png

There may be other images too.

How

Paint, or from slides

:new: :mortar_board: Topic12 Aside for `expandCapacity` details

Related Issues or PRs

Related #131

What

Add an aside to topic12 going into additional details on why expandCapacity be like it do for our ArrayQueue

Why

The additional details will be helpful. As @twentylemon notes:

I'd expand of why here. What stateful values are coupled to the array? May be beneficial to go back to the stack example and see why top is still correct after the expansion.

This is a fantastic idea --- both going into the details and tying (tieing?) it to the ArrayStack's expandCapacity.

Where

topic12.rst
also an aside, probably topic12-expand.rst

Additional Notes

If it's found that the amount of content doesn't quite fit in an aside, this new content can be added to the topic12 main page.

:mortar_board: Proving Correctness

What

Introduce proving algorithm correctness.

Why

Defo beyond the scope of this course, but I think being made aware of this early is cool.

Where

Probably an aside for the searching or sorting topics, but we'll see.

How

Probably prove, pseudo-formally, linear search or bubble sort or something.

Additional Notes

This will be something to add once all the main content is done. Once that's all in place, it will be easier to see if, how, and where this would fit in.

:mortar_board: :telescope: Change generic parameters

What

Replace all the Ts with Es in the generic collections.

Why

Could follow the convention mentioned here:

By convention, type parameter names are single, uppercase letters. This stands in sharp contrast to the variable naming conventions that you already know about, and with good reason: Without this convention, it would be difficult to tell the difference between a type variable and an ordinary class or interface name.

The most commonly used type parameter names are:

E - Element (used extensively by the Java Collections Framework)
K - Key
N - Number
T - Type
V - Value
S,U,V etc. - 2nd, 3rd, 4th types

Where

Anywhere T is used, so both the topic pages and the code itself

Additional Notes

Low priority.

Add code formatter

Need to incorporate code formatting for the repo. Both the Java and ReStructuredText.

Consider grouping website topics into their own directories

Currently, the website is laid out as:

  • src/site -- root
    • src/site/topicX.rst -- lecture topic #X
    • src/site/topicX-aside.rst -- aside for topic #X
    • src/site/img/Y.png -- some image Y.png

Instead, maybe group related items together into subdirectories.

  • src/site -- root
    • src/site/topicX/index.rst -- lecture topic #X
    • src/site/topicX/img/Y.png -- some image used in topic #X; src/site/topicX/Y.png would be fine too
    • src/site/topicX/aside.rst -- aside for topic #X

Maybe also naming the directories topicX_title for added information.

The main benefit is just organizational. Searching for given topics is faster, and it gives more direct links between images/asides and where they are used.

:art: :telescope: :mortar_board: Change indices of image to match others

Related Issues or PRs

Related to #128

What

Change src/site/img/arrayqueue_3idea0.png to end with indices 97, 98, 99 instead of n-3, n-2, n-1.

Why

This will make the image consistent with the subsequent two.

Where

src/site/img/arrayqueue_3idea0.png

How

Idk, paint? Probably easier if I change on the slide and then copy/paste into paint.

Put the code in a better directory

Currently all the code is in the code folder.

Either (a) make sub directories of code/src/ and code/tst or (b) just rename code to src and add tst.

Option (b) may be easier with how sphinx works.

:telescope: Make test names more consistent

Related Issues or PRs

Brought up in #208

What

Go through the test names and come up with a more consistent naming convention.

Why

As of now, the tests are all over the place. Not the end of the world, but could absolutely be improved.

Where

Both the tests and anywhere in the topics where tests are discussed.

How

I like @twentylemon's suggestion of:
unitUnderTest_conditionUnderTest_expectedResult e.g. isEmpty_emptyTree_returnsTrue

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.