Corning Community College CSCS1320 C/C++ Programming Assignments, Documents, Information, and Projects ======Projects====== * [[/haas/summer2017/cprog/projects/cci0|cci0]] (due 20170607) * [[/haas/summer2017/cprog/projects/sof0|sof0]] (due 20170614) * [[/haas/summer2017/cprog/projects/dow0|dow0]] (due 20170621) * [[/haas/summer2017/cprog/projects/mbe0|mbe0]] (due 20170628) * [[/haas/summer2017/cprog/projects/pnc0|pnc0]] (due 20170705) * [[/haas/summer2017/cprog/projects/pnc1|pnc1]] (due 20170712) * [[/haas/summer2017/cprog/projects/mbe1|mbe1]] (due 20170719) iOR * [[/haas/summer2017/cprog/projects/pnc2|pnc2]] (due 20170719) (or do both, 1 as bonus) * [[/haas/summer2017/cprog/projects/fcc0|fcc0]] (due 20170726) * [[/haas/summer2017/cprog/projects/sfa0|sfa0]] (due 20170802) * [[/haas/summer2017/cprog/projects/oop0|oop0]] (due 20170809) * EoCE -- bottom of your journal (due 20170819) ======Class Stats====== * [[/haas/summer2017/cprog/projects/status|status]] (coming at some point) ======Week 11====== * I finished evaluating all projects up to current; if you haven't fallen off the planet, you've had recent communications on an almost project-by-project basis, so there should be no surprises on where you stand. * Hard to believe, but we are coming up on our last week of the class. To wrap things up, I have deployed the End of Course Experience (EoCE), which can be found at the bottom of your journal (only you and I can see it). Unlike the weekly projects, it does not focus on any new topics, merely applications/demonstrations of what you should already know, in accordance to various themes. I will be looking to see how effectively you have picked up on course concepts, through looking at: * how well and consistently your code is indented, organized, and easy to follow through * how well and consistently your code is commented (to aid, and not distract from readability of overall code) * how well you avoid using kludges or painting yourself into corners, for example: * a "kludge" is something I consider sloppy or in poor form, like: * calling the main() function * using a "goto" statement * using well-defined variable names of appropriate type for its intended usage; the variable name should be a form of documentation (I don't want to see things like 'a' or 'x', but longer, more meaningful names so I can derive the role that variable plays in your solution by the name it possesses). * using selection statements, but in a way that demonstrates you understand the conditions being evaluated (standalone, chained, nested, compound conditions, where applicable) * using loops and/or arrays to simplify a process (and improve readability) * using functions to modularize your solution (and to make it more readable) * overall how flexible/durable your solution is for the intended specifications * how flexible you are at writing multiple, smaller programs in a relatively shorter span of time * and of course, actual correctness for what each specification is asking for ======Week 10====== * We're now moving onto object-oriented programming, using C++. Our next project, **oop0** is now available, which focuses on classes and objects. ======Week 9====== * Your next project, **sfa0**, is now available; focusing on the last major fundamental topic, structures. * It also covers an important programming topic, file access, where we will be merging the two to create a solution. ======Week 7====== * As you are wrapping up the current project(s), I've released the next exciting project covering our next topic: **functions** * Another organizational feature of programming (like loops, and arrays), functions allow us to organize our code and benefit from that modularity. ======Week 6====== * I felt inspired, so I created a **bonus** project for you all: **pnc2** * This creates a unique opportunity: * **mbe1** and **pnc2** are worth the same * you //could// opt to do **pnc2** in lieu of **mbe1**, and you will not suffer consequences * if you do both, one of the projects will count entirely as bonus points (a great way to get caught up if you've had any slip-ups) * both projects utilize arrays, the focus of that next project. * The way I see it is as follows: * **mbe1** should be conceptually simpler, but the coding (especially with the strict output specifications) will be more detailed. * **pnc2** is likely conceptually a little challenging, but I've found the coding to be rather simple. ======Week 5====== * Continuing my efforts to release a few projects in advance of where we are, **mbe1** has been released. As you finish **mbe0**, you may want to take a look at **mbe1** to get the overall gist- not to commence working on it, but to get your mind contemplating how you might go about solving it. Once we get through the pnc projects, aspects of looping should be more familiar. ======Week 4====== * I released some additional projects, as we get into looping (following an mild exercise in futility to get us more appreciative of looping). The projects will also focus on an important Computer Science concept: algorithmic complexity/efficiency/optimization, and we will do so under the theme of exploring prime number computations. * pnc0 has us implementing a baseline program and an initial (simple) optimization, performing some timing comparisons, and analyzing the results. You will also be exposed to more rigorous implementation specifications. Attention to detail is important! * pnc1 continues the theme, as we explore additional optimizations that take place in this particular domain. We'll also time and compare our results (against our previous implementations), allowing us to better appreciate the importance of algorithm and implementation in our solutions. ======Week 3====== * Still rather quiet all around... I assume that means everyone is understanding and plugging along. * Please, ask questions if something doesn't make sense... a number of you couldn't get my automatic project checker to work, and in pretty much all cases it was a minor, minor issue (capitalization, extra space)... please ask, I am more than happy to help! ======Week 2====== * Generally smooth sailing so far, despite a mail server hiccup preventing some from subscribing to the mailing list. * Over the weekend, more people subscribed to the list... soon we can commence using it for regular class communications (hopefully within the next day or so). * The next set of projects have been released. The general trend is for the project to introduce/have you play with some important concept, while building upon or utilizing experiences from past projects. * In case we have motivated individuals, where I can I will try to release multiple projects, so you can work ahead slightly if desired. * Again, please ask questions! Don't struggle needlessly on anything (and don't beat your head against a wall for hours on end-- set a limit; if you can't figure it out on your own after 1-2 hours, stop and take a break, and/or ask!) ======Week 1====== * Welcome! I've wrapped all the initial activities into one project, **[[/haas/summer2017/cprog/projects/cci0|cci0]]**, that I'd like you to perform by the given deadline (by 11:59:59pm / 23:59:59). * If you've never used a UNIX system before, I'd recommend reading **{{:haas:ufbm.pdf|UNIX for the Beginning Mage}}**; it is short, and likely one of the best reads you'll ever have. * Get familiar with how to log onto Lab46, and once on: * change to your **src/** subdirectory * create/edit .c files (such as **hello.c**), and learn how to save/exit * compile the C program (.c file(s)) into an executable with **gcc** * execute the compiled C program (the executable) by specifying a path: **./program_name** * I've also released the second project (and first real programming project), should people really like to get a leg up on things (**sof0**).