I wanted something a little bit more advanced than just drawing a line, because I don't really know how to properly scale this line into an entire scene, and I'm looking for something on a larger scale.
The thing is, it's a school project, and the requirements are either Java or C#, and no OpenGL or DirectX. The first link uses WPF (which uses DirectX for rendering) and SharpDX.
Well, in your original post you said you wanted to "create a software renderer," which is the same thing in any language. The no OpenGL or DirectX requirement also doesn't change anything. The underlying fundamentals are still the same. All that changes is how you present the image on the screen.
Imagine that I was allowed to use OpenGL, what changes? Well, I could rasterize to a buffer in memory and present the finished image using OpenGL. In other words, I let OpenGL be my in-program image-viewer.
Just get started. It doesnt matter what you draw on. You could draw to a buffer that you write to a .bmp file and show in windows image viewer. If the goal is a software renderer, the rest doesn't matter. Just focus on the rasterizing part. You can worry about what you draw on later.
The links I posted will tell you everything you need to know to get started.
From the link I posted, is a good article about triangle rasterization:
http://fgiesen.wordpress.com/2013/02/08/triangle-rasterization-in-practice/
And for the "scaling" - that's where linear algebra, lots of theory and many hours comes in.
http://www.arcsynthesis.org/gltut/Basics/Intro%20Graphics%20and%20Rendering.html
and
http://www.arcsynthesis.org/gltut/Positioning/Tut05%20Boundaries%20and%20Clipping.html#d0e5543
This gives an overview of the process, which should help you get started. You need to start at the beginning just like everyone else.
And a gamedev forum post about this subject:
http://www.gamedev.net/topic/595604-resources-for-writing-a-software-renderer/
A more advanced series, on perspective texture mapping:
http://chrishecker.com/Miscellaneous_Technical_Articles
As you can see, it gets abit harder when you move on to texture mapping. Which is why my advice is to keep it simple.
Start with a 2D renderer. It will simplify things. Rasterize some lines.
Move on to a 3D wireframe rasterizer. Then rasterize solid triangles with a single color. Then flat shaded materials (eg. each triangle or side of a cube has different colors).