adding all php files
This commit is contained in:
297
php/academic_integrity.php
Executable file
297
php/academic_integrity.php
Executable file
@@ -0,0 +1,297 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.academic-integrity-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
.academic-integrity-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<?php include 'calendar_data.php'; ?>
|
||||
|
||||
<p class=DS_P>
|
||||
<font style="font-weight:bold; color:var(--special-text-color);">
|
||||
Important: Please read the following statement thoroughly.
|
||||
<br>
|
||||
If you
|
||||
have any questions, contact the instructor or the TAs immediately.
|
||||
</font>
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
<font style="font-weight:bold; color:var(--special-text-color);">
|
||||
Complete the short online quiz about the
|
||||
|
||||
<?php
|
||||
//if (0) {
|
||||
if (lecturereleased(1)) {
|
||||
print '<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/gradeable/academic_integrity">Syllabus and Collaboration Policy</a>';
|
||||
} else {
|
||||
print 'Syllabus and Collaboration Policy';
|
||||
}
|
||||
?>
|
||||
<br>before starting the first homework.
|
||||
</font>
|
||||
</p>
|
||||
|
||||
|
||||
<h1>Collaboration Policy & Academic Integrity</h1>
|
||||
|
||||
<h2>Lecture Participation Polls</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
Responses to lecture participation polls will be used to earn incentives
|
||||
for the Data Structures course. Discussion of collaborative lecture participation polls
|
||||
with those seated around you is encouraged.
|
||||
However, if we find anyone submitting answers for or using the account of
|
||||
another individual, we will zero the lecture participation points of all involved students
|
||||
and report the incident to the Dean of Students.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Academic Integrity for Tests and Final Exam</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
The tests and final exam for this course will be completed
|
||||
individually. Copying, communicating, or using disallowed materials
|
||||
during a test is cheating, of course. Students caught cheating on a
|
||||
test will receive an F in the course and will be reported to the Dean
|
||||
of Students for further disciplinary action.
|
||||
</p>
|
||||
|
||||
<h2>Collaboration Policy for Programming Labs</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
Collaboration is encouraged during the weekly programming labs.
|
||||
Students are allowed to talk through and assist each other with these
|
||||
programming exercises. Students may ask for help from each other, the
|
||||
graduate lab TA, and undergraduate programming mentors. But each
|
||||
student must write up and debug their own lab solutions on their own
|
||||
laptop and be prepared to individually present and discuss this work
|
||||
with the TA to receive credit for each checkpoint.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
As a general guideline, students may look over each other's shoulders
|
||||
at their labmate's laptop screen during lab — this is the best
|
||||
way to learn about IDEs, code development strategies, testing, and
|
||||
debugging. However, looking should not lead to line-by-line copying.
|
||||
Furthermore, each student should retain control of their own keyboard.
|
||||
While being assisted by a classmate or a TA, the student should remain
|
||||
fully engaged on problem solving and ask plenty of questions.
|
||||
Finally, other than the specific files provided by the instructor,
|
||||
electronic files or file excerpts should not be shared or copied (by
|
||||
email, text, Dropbox, GitHub, or any other means).
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Homework Collaboration Policy</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
Academic integrity is a complicated issue for individual programming
|
||||
assignments, but one we take very seriously. Students naturally want
|
||||
to work together, and it is clear they learn a great deal by doing so.
|
||||
Getting help is often the best way to interpret error messages and
|
||||
find bugs, even for experienced programmers. Furthermore, in-depth
|
||||
discussions about problem solving, algorithms, and code efficiency are
|
||||
invaluable and make us all better software engineers. In response to
|
||||
this, the following rules will be enforced for programming
|
||||
assignments:
|
||||
</p>
|
||||
|
||||
<ul class=DS_UL>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Students may read through the homework assignment together and discuss
|
||||
what is asked by the assignment, examples of program input & expected
|
||||
output, the overall approach to tackling the assignment, possible high
|
||||
level algorithms to solve the problem, and recent concepts from
|
||||
lecture that might be helpful in the implementation.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Students are not allowed to work together in writing code or
|
||||
pseudocode. Detailed algorithms and implementation must be done
|
||||
individually. Students may not discuss homework code in detail
|
||||
(line-by-line or loop-by-loop) while it is being written or
|
||||
afterwards. In general, students should not look at each other's
|
||||
computer screen (or hand-written or printed assignment design notes)
|
||||
while working on homework. As a guideline, if an algorithm is too
|
||||
complex to describe orally (without dictating line-by-line), then
|
||||
sharing that algorithm is disallowed by the homework collaboration
|
||||
policy.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Students are allowed to ask each other for help in interpreting error
|
||||
messages and in discussing strategies for testing and finding bugs.
|
||||
First, ask for help orally, by describing the symptoms of the problem.
|
||||
For each homework, many students will run into similar problems and
|
||||
after hearing a general description of a problem, another student
|
||||
might have suggestions for what to try to further diagnose or fix the
|
||||
issue. If that doesn't work, and if the compiler error message or
|
||||
flawed output is particularly lengthy, it is okay to ask another student
|
||||
to briefly look at the computer screen to see the details of the error
|
||||
message and the corresponding line of code. Please see a TA during office
|
||||
hours if a more in-depth examination of the code is necessary.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Students may not share or copy code or pseudocode. Homework files or
|
||||
file excerpts should never be shared electronically (by email, text,
|
||||
LMS, Dropbox, GitHub, etc.). Homework solution files from previous years
|
||||
(either instructor or student solutions) should not be used in any
|
||||
way. Students must not leave their code (either electronic or
|
||||
printed) in publicly-accessible areas. Students may not share
|
||||
computers in any way for the duration of this course. Each
|
||||
student is responsible for securing their homework materials using all
|
||||
reasonable precautions. These precautions include: Students should
|
||||
password lock the screen when they step away from their computer.
|
||||
Homework files should only be stored on private accounts/computers
|
||||
with strong passwords. Homework notes and printouts should be stored
|
||||
in a locked drawer/room.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
The software you write for your Data Structures homework assignments
|
||||
may never be published in a public repository on GitHub or on any
|
||||
other software sharing site. Contributing to open source projects and
|
||||
publishing personal software projects are excellent ways to
|
||||
demonstrate your skills to future employers. We encourage you to join
|
||||
the Rensselaer Center for Open Source Software (RCOS) and build an
|
||||
online portfolio of amazing work. However, your Data Structures
|
||||
homework assignments may not be part of that portfolio. Your Data
|
||||
Structures homework solutions will not impress recruiters. A strong
|
||||
semester grade in Data Structures, contributions to open-source
|
||||
software, independent non-course projects, undergraduate research, and
|
||||
acing the coding interview will land you a great summer internship!
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Students may not show their code or pseudocode to other students as a
|
||||
means of helping them. Well-meaning homework help or tutoring can
|
||||
turn into a violation of the homework collaboration policy when
|
||||
stressed with time constraints from other courses and
|
||||
responsibilities. Sometimes good students who feel sorry for
|
||||
struggling students are tempted to provide them with "just a peek" at
|
||||
their code. Such "peeks" often turn into extensive copying, despite
|
||||
prior claims of good intentions.
|
||||
</p>
|
||||
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Students may not receive detailed help on their assignment code or
|
||||
pseudocode from individuals outside the course. This restriction
|
||||
includes tutors, students from prior terms, friends and family
|
||||
members, internet resources, etc.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
All collaborators (classmates, TAs, ALAC tutors, upperclassmen,
|
||||
students/instructor via LMS, etc.), and all of the resources (books,
|
||||
online reference material, etc.) consulted in completing this
|
||||
assignment must be listed in the README.txt file submitted with the
|
||||
assignment.
|
||||
</p>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
<h2>Homework Plagiarism Detection and Academic Dishonesty Penalty</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
We use an automatic code comparison tool to help spot homework
|
||||
assignments that have been submitted in violation of these rules. The
|
||||
tool takes all assignments from all sections and all prior terms and
|
||||
compares them, highlighting regions of the code that are similar. The
|
||||
plagiarism tool looks at core code structure and is not fooled by
|
||||
variable and function name changes or addition of comments and
|
||||
whitespace.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
The instructor checks flagged pairs of assignments very carefully, to
|
||||
determine which students may have violated the rules of collaboration
|
||||
and academic integrity on programming assignments. When the
|
||||
instructor believes that an incident of academic dishonesty has
|
||||
occurred, the involved students are contacted and a meeting is
|
||||
scheduled. All students caught cheating on a programming assignment
|
||||
(both the copier and the provider) will be punished. <em>For
|
||||
undergraduate students, the standard punishment for the first offense
|
||||
is a 0 on the assignment and a full letter grade reduction on the
|
||||
final semester grade. Furthermore, students with academic integrity
|
||||
violations will lose all late days and may not earn additional late
|
||||
days or early submission assignment extension incentives for future
|
||||
assignments.</em> Students whose violations are more flagrant will
|
||||
receive a higher penalty. Undergraduate students caught a second time
|
||||
will receive an immediate F in the course, regardless of
|
||||
circumstances. Each incident will be reported to the Dean of
|
||||
Students.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
<em>
|
||||
Graduate students found to be in violation of the academic integrity
|
||||
policy for homework assignments on the first offense will receive an F
|
||||
in the course</em> and will be reported both to the Dean of Students and to
|
||||
the chair of their home department with the strong advisement that
|
||||
they be ineligible to serve as a teaching assistant for any other
|
||||
course at RPI.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
<em>You are not allowed to publicly post or privately share your Data
|
||||
Structures code even after you complete the course.</em> If code from
|
||||
students is ever found in a public repository (e.g., GitHub) or other
|
||||
online source or if that code matches the code submission of another
|
||||
student in a later term, all involved students will be reported to the
|
||||
Dean of Students and the Computer Science Department Head -- even if
|
||||
they are not currently registered for Data Structures, or not
|
||||
currently enrolled at RPI, or have graduated from RPI. The instructor
|
||||
may file a retroactive change of semester grade with the registrar for
|
||||
the Data Structures course. The instructor may also submit a takedown
|
||||
notice and violation of terms of service or copyright to the website
|
||||
host of the public repository. The students will also forfeit any
|
||||
opportunity for a positive reference or recommendation letter from the
|
||||
instructor.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Academic Dishonesty in the Student Handbook</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
Refer to the
|
||||
<A HREF="https://info.rpi.edu/dean-students/student-rights-responsibilities-and-judicial-affairs">
|
||||
The Rensselaer Handbook of Student Rights and Responsibilities </A>
|
||||
for further discussion of academic dishonesty. Note that: "Students
|
||||
found in violation of the academic dishonesty policy are prohibited
|
||||
from dropping the course in order to avoid the academic penalty."
|
||||
</p>
|
||||
|
||||
<h2>Number of Students Found in Violation of the Policy</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
Historically, 5-10% of students are found to be in violation of the
|
||||
academic dishonesty policy each semester. Many of these students
|
||||
immediately admit to falling behind with the coursework and violating
|
||||
one or more of the rules above and if it is a minor first-time offense
|
||||
may receive a reduced penalty.
|
||||
</p>
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
230
php/advice_F11.php
Executable file
230
php/advice_F11.php
Executable file
@@ -0,0 +1,230 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.getting-help-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.getting-help-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="left-sidebox">
|
||||
<h1>Advice from Fall 2011 Students</h1>
|
||||
</td>
|
||||
<td class="right-sidebox">
|
||||
<div id="side-nav-buttons" class="my_sidebox">
|
||||
<ul class="sidebox">
|
||||
<li><a href="getting_help.php" class="nav-row">Getting Help: Online Discussion, Office Hours, & Tutoring</a></li>
|
||||
<li><a href="references.php" class="nav-row">References: Textbooks & Web Resources</a></li>
|
||||
<li><a href="advice_S14.php" class="nav-row">Advice from Spring 2014 Data Structures Students</a></li>
|
||||
<li><a href="advice_F11.php" class="nav-row getting-help-selected sidebox">Advice from Fall 2011 Data Structures Students</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
<font size=+1>
|
||||
<b>On the Fall 2011 Course Evaluations we asked: <br><br>
|
||||
"What advice would you give a friend who
|
||||
is considering taking this class?<br>
|
||||
What are the necessary
|
||||
prerequisites, co-requisites, or prior experience?<br>
|
||||
What should you do
|
||||
to succeed?"</b>
|
||||
</font>
|
||||
</p>
|
||||
<br>
|
||||
|
||||
<ul class=DS_UL>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
This is a huge step-up from CS I. Get help from ALAC and office hours when you can and don't be afraid to ask if you feel something wasn't graded properly.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
If you took CSCI-1100 and found it challenging, data structures is going to take you a lot of work. Go, self study!
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Start homeworks about 4-5 days in advance.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Only take it if you're very interested in programming (or a CS major) and willing to spend a lot of time programming
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
I'd tell them that this class is a lot of work, and definitely wouldn't recommend it to someone with little/no programming experience.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
You should know at least one programming language before hand, or have some very basic programming experience. An AP Computer Science course might be sufficient, but that also depends on how well taught that Computer Science course was. To succeed, you really only need to go to class and pay attention to lectures and then be prepared to implement what you learned in labs and homework. Not difficult really.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Spend a LOT of time going over the homework: reviewing the packet's instructions, any provided code, in-class examples... Also, make sure you can develop without annoyances a.s.a.p: running the wubi Ubuntu installer is great.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Computer Science 1 is a must, and you should get an A or B+ to have a chance in this class. To succeed, start homework early.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Finish the provided lab material ahead of time. To succeed, don't take any breaks.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
There should be a warning that CS1 is not a sufficient prerequisite for the homeworks. The ability to think and plan out code rather than just start writing is extremely important, and prior experience programming helps a lot in this.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Keep on top of homeworks and plan enough time to complete each assignment early enough so that programs can be debugged and submitted. Prior experience programming (any language) is helpful.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Be prepared for the hours of homework.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
DON'T PROCRASTINATE ON THE HOMEWORK!
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
I would say they mostly need some computer science background, probably in C++ or a similar language like Java. I would tell them as long as you pay attention and don't start the homeworks the day they're due and actually study throughout the semester - and not the night before - it's pretty easy.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Significant experience with Java or any other C-like language is very helpful as a prerequisite. Using Linux is probably an advantage, but by no means required. Expect to spend many hours working on homework projects.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
For this class you should have at the very least an elementary foundation of understanding of C++ and its syntax and nuances. You don't necessarily need to take an entire course on it, as long as you understand another language, but you should run through a few tutorials with the language before diving into the class. Nothing is more frustrating than understanding a concept and still getting obscure syntax errors with no apparent meaning.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Stay ahead. Most homeworks and labs took a moderate but predictable time. However I occasionally encountered bugs that took a longer time to resolve. Leave lots of time to sort those out. The prior information on the course website seems adequate.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Cancel all plans, you'll need time for homework.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Lots of work, time management is important.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Be prepared, this class is hard.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Pay attention to CS1 before taking data structures. Comment your code, and ask lots of questions.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
DO THE WEEKLY HOMEWORK EARLY. And at least look at the lab before you do it.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Study and program a lot.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Having a good understanding of basic C++ programming, or equivalent, it necessary for the class. To do well, always attend lecture and participate.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Get ready to sit in the dorm room for hours on end.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
I would tell them they need to be very good at computer science to do well in this class. I would not recommend it to majors that aren't computer science or computer systems engineering.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Prepare to take the class twice or prepare to barely pass. Impossible to come in without EXTENSIVE knowledge of programming.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
All one needs to take this class is some experience in any programming language. And just make sure you have enough time for the homework.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
If you are not a strong programer then go to ALAC tutoring every single chance you can. Also meet with the professor several times throughout the semester. She is very understanding and if you let her know you're trying and doing everything you can, then she will be more understanding and more helpful.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Prepare for a lot of homework.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Be used to C++ and have the tools needed to work on it. Have a lot of time. Little, other then the oddly unfair tests, is all that bad in the class. It just takes up all of your time.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Don't expect to get work for any other classes done on Thursday nights.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
"Homework takes thrice as long as you think it will, start it now."
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Start the homework early! If you start it on Wednesday or, gods forbid, the day it is due, you will invariably run into tons of time-eating bugs. If you start it early, not only will you experience less stress, but often may be able to to finish it without putting in as much time.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
I would tell the friend to start as early as possible on the homeworks and to go to ALAC and office hours as often as possible. I had little to no C++ experience before this class and I didn't find that that hindered me too much.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Know some C++ or self teach yourself a bit before taking the class. Compsci 1 is a prerequisite, and it's helpful if you know C++ to start with. You should do homework early and not use late days early on, as well as actually study for tests.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
You should know some basic C++ and have a general understanding of programming. Make sure you start the homework early and allocate enough time for it.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Start your homework early. Debugging can take up to 20-25 hours if you get stuck.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Work on the homeworks a lot, pay attention to lecture to do well on the exams, studying lecture notes is hard to do effectively, practice tests are hit or miss.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Do homework early and completely - reflective of the exams, strive to understand material in class, go to class.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Do not take it if you do not need to. It ruined my liking for the subject and despite getting an A in comp sci 1 at RPI I felt unprepared for the class and wound up leaning most of the material on my own. Frankly I am not sure how to succeed in this class, my test scores are bringing down my grade even though I have A in the labs and homeworks.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Pay attention and study, understanding of the basics of comp sci 1 is essential. If those foundations are not there either they must quickly acquire them or they won't do well. In order to succeed you must have a good grasp of information and either work hard or have a natural aptitude for the subject. And even then you may have to work hard.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Never take this class along with IED. To do well, attend lecture and at least review the homework over the weekend to get a general understanding and ask questions if not sure.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Make sure you did well in CS1 and try to come in with some prior knowledge.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Get used to online homework submission and coding environment quickly before the first homework.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Knowing C++ first would certainly help. Migrating from Java is a little difficult.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Start your homework early in the week and get help if needed.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
I would recommend having previous programming experience or completing a comp sci 1 course at another school since the pre-req course at RPI absolutely did not prepare me for Data Structures.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Go to lecture as often as you can stand... study hard for the tests, because they are difficult.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
I would advise said friend to be prepared to work extremely hard for every homework and assignment, unless of course they're naturally an excellent programmer. A fair amount of prior experience with programming is definitely necessary for this course; I didn't take CSI prior to taking it, so I'm not sure how helpful that class would be as a prerequisite, but would definitely be necessary that they take CSI if they have no prior coding experience.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Make sure you have a lot of free time to do the homeworks and ALAC and UPE are major helpers.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Start the homeworks early, go to ALAC if things go wrong, attend lecture, plan before writing code, do not write everything before you compile.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
I would suggest getting as much help as you can so you don't fall behind at all.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Don't take it. ONLY freshman compsci majors should take this course with this teacher. Non-compsci majors should have better things to do, and non-freshman shouldn't have time to take this class.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
You should take CSCI-1100 and not waive it. You should also be very interested in programming and try programming outside of class materials.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Come prepared to program make sure to take good notes. The tests are a good measurement of whats covered in lecture, hw, and labs. Make sure to get started on the HW early as it does take a while to complete.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Also own a second computer which you sync with your primary one several times a day because you won't get an extension on your homework when your computer stops working the night before it's due and can't be fixed for several days.
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
I would tell a friend who has prior programming experience that it is a great course for understanding the lower-level components of c++, and would highly recommend it. For someone who has not had much programming experience, I would suggest comp sci 1 first, because this course is quite challenging and frustrating if one doesn't have the necessary foundation in programming. To succeed, stay on top of homeworks and make a good cheat sheet for the exam. If it is good enough, you probably won't need it. No formal prereqs, but Comp Sci 1 is recommended if no prior experience with programming languages.
|
||||
</p>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
293
php/advice_S14.php
Executable file
293
php/advice_S14.php
Executable file
@@ -0,0 +1,293 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.getting-help-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.getting-help-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="left-sidebox">
|
||||
<h1>Advice from Spring 2014 Students</h1>
|
||||
</td>
|
||||
<td class="right-sidebox">
|
||||
<div id="side-nav-buttons" class="my_sidebox">
|
||||
<ul class="sidebox">
|
||||
<li><a href="getting_help.php" class="nav-row">Getting Help: Online Discussion, Office Hours, & Tutoring</a></li>
|
||||
<li><a href="references.php" class="nav-row">References: Textbooks & Web Resources</a></li>
|
||||
<li><a href="advice_S14.php" class="nav-row getting-help-selected sidebox">Advice from Spring 2014 Data Structures Students</a></li>
|
||||
<li><a href="advice_F11.php" class="nav-row">Advice from Fall 2011 Data Structures Students</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</table>
|
||||
|
||||
|
||||
<h2>Prior programming experience, knowing C++</h2>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><p class=DS_P>"CSCI 1100 was definitely helpful coming into this! But other than
|
||||
that, I had no computer experience and I learned a lot!"</p>
|
||||
<li class=DS_LI><p class=DS_P>"I was not familiar with C++ beforehand and did fine, though taking
|
||||
CS1 first rather than skipping it and going directly to Data
|
||||
Structures was a good choice."</p>
|
||||
<li class=DS_LI><p class=DS_P>"You don't need any prior experience with C++ programming (I
|
||||
certainly didn't have any). But at the same time, if you don't have
|
||||
any, don't expect to cruise through this class."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Experience in Java is helpful, as the syntax between Java and C++
|
||||
is very similar."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Familiarize yourself with C++ before the class."</p>
|
||||
<li class=DS_LI><p class=DS_P>"There are many online tutorials that can help teach you the basics
|
||||
of C++. Even just learning the syntax and the process of compiling
|
||||
will go a long way."</p>
|
||||
</ul>
|
||||
|
||||
<h2>Who should take this course</h2>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><p class=DS_P>"I would say that anyone who has taken Computer Science I and
|
||||
enjoyed it should take this course."</p>
|
||||
<li class=DS_LI><p class=DS_P>"I would definitely recommend that EVERYBODY I know take this
|
||||
course. I don't think I've ever learned more from a class and I am
|
||||
a senior graduating with two majors so that's not for lack of taking
|
||||
courses. No prerequisites are necessary in my opinion, just spare
|
||||
time and some self-driven motivation."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Make sure you have a keen interest in computer science before
|
||||
taking this course."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Don't take it if it's not a requirement for your major or you're
|
||||
not interested in programming."</p>
|
||||
<li class=DS_LI><p class=DS_P>"If you're interested in stuff this advanced, you're probably
|
||||
already a CS major."</p>
|
||||
</ul>
|
||||
|
||||
<h2>Time commitment</h2>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><p class=DS_P>"Be prepared to spend 10-12 hours a week on homework. If you know
|
||||
what you're doing, it will take significantly less time than that."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Take the course. As an engineer the workload is pretty
|
||||
typical. Everyone complains about it, but that is mostly because
|
||||
they aren't used to RPI workload yet."</p>
|
||||
<li class=DS_LI><p class=DS_P>"This course is a big step up from CSCI 1100."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Don't be involved with too many social activities."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Don't take Intro to Bio at the same time. They don't mix."</p>
|
||||
<li class=DS_LI><p class=DS_P>"I strongly suggest taking 16 credits or less when taking Data
|
||||
Structures."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Allocate a ton of time for homework. You really don't need anything
|
||||
prior to taking this class, but the less experience you have, the
|
||||
more time you should allow for working on homework."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Do not underestimate the amount of time assignments will
|
||||
take. Start reading the as soon as they are posted. Do not assume
|
||||
you will not run into issues even when you think you are almost
|
||||
done."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Make sure that you put the necessary amount of time into the class
|
||||
and do not be afraid to ask for help from any of the different
|
||||
resources. The concepts take time to understand and the homeworks
|
||||
take a lot of time to do, so allot your weekly time wisely."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Do the work and put in the time and you'll be fine."</p>
|
||||
</ul>
|
||||
|
||||
<h2>General advice</h2>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><p class=DS_P>"Find a study group."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Make friends in the class, make friends with people who have taken
|
||||
the class before. You cannot do this class by yourself."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Be committed to learning."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Create good study habits."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Be consistent with your programming practice. I was successful
|
||||
through continual hard work in the course along with a desire to
|
||||
learn and a refusal to fail."</p>
|
||||
<li class=DS_LI><p class=DS_P>"One of the most important keys to success in this course is your
|
||||
own determination. Even if you did not get an A in CS1, you have
|
||||
to believe that you are capable of doing well in this course."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Look at the first homework, and if you think you could do it using
|
||||
C++ or any other language, you're probably good to go."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Do not be discouraged by the first test/hw."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Keep physically and mentally healthy."</p>
|
||||
</ul>
|
||||
|
||||
<h2>Lecture advice</h2>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><p class=DS_P>"You have to go to all the lectures if you want to understand -- do
|
||||
not miss any!"</p>
|
||||
<li class=DS_LI><p class=DS_P>"No laptops in class."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Take notes and participate in class to finish the in-class exercises."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Go to lectures and try your best to pay attention. Also answer
|
||||
questions and write down every example... you don't know when those
|
||||
will come in handy."</p>
|
||||
</ul>
|
||||
|
||||
<h2>Lab advice</h2>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><p class=DS_P>"Start the lab checkpoints before lab, that way you can get full
|
||||
credit for the labs"</p>
|
||||
<li class=DS_LI><p class=DS_P>"Take full advantage of labs to get your questions answered."</p>
|
||||
</ul>
|
||||
|
||||
<h2>Homework advice, starting early</h2>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><p class=DS_P>"Start the homework early, at least by Sunday."</p>
|
||||
<li class=DS_LI><p class=DS_P>"My advice would be to not procrastinate homework."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Start the homeworks the weekend they are assigned so you are at
|
||||
least thinking about them the entire week."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Start the HW on Thursday. YES, I am talking about the second you
|
||||
submit the previous HW."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Always start it at least four days in advance, and do not be
|
||||
afraid to go to office hours if you're stuck."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Start the homework a week before it is due. Don't panic."</p>
|
||||
<li class=DS_LI><p class=DS_P>"I would start it on Monday and still have trouble getting it done
|
||||
ahead of time."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Start the homeworks on Saturday. Call it Data-rday, get a group of
|
||||
friends together, get snacks, celebrate it, and then come in with
|
||||
questions on Monday for the TAs because Office Hours on any day
|
||||
besides Monday are horrendous."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Don't push your homework to the last day it is due."</p>
|
||||
<li class=DS_LI><p class=DS_P>"I would recommend doing the programming assignments over a longer
|
||||
period of time, not in one or two nights, so you have adequate
|
||||
opportunity to ask questions if need be."</p>
|
||||
</ul>
|
||||
|
||||
<h2>Homework advice, late days</h2>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><p class=DS_P>"Late days should only be used in emergencies or on particularly
|
||||
difficult homework."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Don't anticipate using a late day."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Don't use your late days early in the semester."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Don't blow all your late days on the first few assignments."</p>
|
||||
</ul>
|
||||
|
||||
<h2>General homework advice</h2>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><p class=DS_P>"You will learn alot if you do all the homeworks."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Writing pseudocode or breaking down an assignment into little notes
|
||||
can help."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Don't be discouraged if the solution to the assignment does not
|
||||
come instantly. These assignments are designed to make you think
|
||||
hard about a problem."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Drawing a visual of the data structure helps immensely."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Watch for corner cases."</p>
|
||||
<li class=DS_LI><p class=DS_P>"If you feel homework is too easy, then work on improving the time
|
||||
efficiency of algorithm."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Be prepared for late nights and frustratingly hard work."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Think happy thoughts and stay positive when debugging. Don't
|
||||
let those mountains of errors get the best of you!"</p>
|
||||
</ul>
|
||||
|
||||
<h2>Office hours/ALAC</h2>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><p class=DS_P>"Go to ALAC, tutors are much nicer than TAs/Mentors, more patience
|
||||
and more helpful."</p>
|
||||
<li class=DS_LI><p class=DS_P>"I would also advise them to never be afraid of going to ALAC or to
|
||||
TA Office Hours for help."</p>
|
||||
<li class=DS_LI><p class=DS_P>"You will not know everything. Ask for help."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Go to office hours."</p>
|
||||
<li class=DS_LI><p class=DS_P>"If you go to office hours, go early and often. They were almost
|
||||
always overcrowded."</p>
|
||||
<li class=DS_LI><p class=DS_P>"I know it is cold out, and windy, and it is late and it is far
|
||||
away...but go to ALAC. Go to office hours. It will save you so much
|
||||
strife. And go early, go on Monday and you will have a happy
|
||||
Thursday."</p>
|
||||
<li class=DS_LI><p class=DS_P>"The biggest advice I would give is to attend as many office hours
|
||||
as you can. Even if you understand the assignment, office hours is
|
||||
a great place to get your homework done, and if you do end up
|
||||
getting stuck, you can immediately resolve your problem as opposed
|
||||
to spending hours debugging."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Go to TA office hours, ALAC tutoring, and never give up. Use online
|
||||
resources to figure out syntax and don't be afraid to ask questions
|
||||
in lab."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Have patience with the office hours help queue."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Go to office hours if you have problems, the TA's are great."</p>
|
||||
</ul>
|
||||
|
||||
<h2>Test preparation</h2>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><p class=DS_P>"Do more small problems, handwritten, than you are given. That way
|
||||
you'll be faster in solving and writing out test problems."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Be a very fast and neat writer."</p>
|
||||
<li class=DS_LI><p class=DS_P>"You'll have a very hard time on the test if you don't get a good
|
||||
amount of practice writing code on paper."</p>
|
||||
<li class=DS_LI><p class=DS_P>"Write down the lecture exercises, they're great for reference on
|
||||
the page of notes allowed for tests."</p>
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>What resources did you find most helpful in learning the course material? (130 total responses)</h2>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
online resources, e.g., stackoverflow.com, cplusplus.com, and google (53)
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
TAs / TA office hours (50)
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
lectures and/or lecture notes (29)
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
labs (24)
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
ALAC (24)
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
LMS (17)
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
students from prior term (17)
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
current data structures students (16)
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
homework (7)
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
instructor office hours (4)
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
textbook (3)
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
practicing coding (2)
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
back tests (2)
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
posted homework solutions (1)
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
private tutor (1)
|
||||
</p>
|
||||
</ul>
|
||||
|
||||
<p class=DS_P> </p>
|
||||
|
||||
<p class=DS_P>
|
||||
See also:<br>
|
||||
<a href="advice_F11.php">
|
||||
Advice from Fall 2011 CSCI 1200 Data Structures students</a>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
|
||||
128
php/advice_TAs.php
Executable file
128
php/advice_TAs.php
Executable file
@@ -0,0 +1,128 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.programming_information-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.programming_information-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="left-sidebox">
|
||||
<h1>Programming Advice from the TAs</h1>
|
||||
</td>
|
||||
<td class="right-sidebox">
|
||||
<div id="side-nav-buttons" class="my_sidebox">
|
||||
<ul class="sidebox">
|
||||
<li><a href="programming_information.php" class="nav-row">Helpful C++ Programming Information</a></li>
|
||||
<li><a href="good_programming.php" class="nav-row">Good Programming Practices</a></li>
|
||||
<li><a href="advice_TAs.php" class="nav-row programming_information-selected sidebox">Programming Advice from the TAs</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
|
||||
<ul class=DS_UL>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Read over the assignment in full before you begin coding.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Only code once you have at least a general idea of what your plan
|
||||
of action is, and preferably only once you're sure of your data
|
||||
structures and algorithms.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Once you start coding, make sure you compile after every 3 or 4
|
||||
lines of code you write. This way, if there is a compilation error,
|
||||
you know exactly where it is occurring.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>When you write a piece of functionality, test it fully
|
||||
before you move on to the next one. Make sure every small piece of
|
||||
code you write does what you want it to, and that way when things
|
||||
aren't working later in your code you can assume the error is not in
|
||||
the functionality you've already written and tested, but rather in
|
||||
something new.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>When compiling, always look at the first error, fix it, and
|
||||
recompile. Oftentimes, the first error causes several more.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Learn what the more common errors mean. Nine times out of ten,
|
||||
the same error is caused by the same mistake.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Comment the top of every function, because:
|
||||
</p>
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><p class=DS_P>commenting is worth points, and
|
||||
</p>
|
||||
<li class=DS_LI><p class=DS_P>it will help you remember what you were thinking when
|
||||
you wrote that function when you have to edit it.
|
||||
</p>
|
||||
</ul>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Break code into logical small pieces; this allows easier debugging
|
||||
and code re-use.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Learn how to use a debugger and take advantage of this tool.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Do not come to Thursday's (due date) office hours, download the
|
||||
assignment in front of the TA, and expect help. Start early, and come to
|
||||
office hours with specific questions.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Do not submit code that does not compile. If incomplete, submit
|
||||
code that compiles with limited functionality. (See earlier point
|
||||
about compiling often.)
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Read over the assignment again in full after you have finished
|
||||
coding to make sure you haven't missed any requirements.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Backup your work before adding functionality or making major changes.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Proper formatting will make your code much more readable.
|
||||
Learn how to control the indentation settings in your C++ development
|
||||
environment so that it helps format and even auto-color your code for
|
||||
you.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Install and learn how to compile & test your program on your
|
||||
code with the same g++ compiler that the homework submission server
|
||||
uses.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Get to know your graduate TAs and undergraduate programming
|
||||
mentors by name ... they are invaluable resources.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>When asking for help in person or sending email to your TA or
|
||||
professor, be thorough and polite and remember that we receive
|
||||
hundreds of emails each semester from students.
|
||||
</p>
|
||||
|
||||
</ul>
|
||||
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
1069
php/calendar_data.php
Executable file
1069
php/calendar_data.php
Executable file
File diff suppressed because it is too large
Load Diff
249
php/course_calendar.php
Executable file
249
php/course_calendar.php
Executable file
@@ -0,0 +1,249 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.calendar-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
.calendar-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<?php include 'calendar_data.php'; ?>
|
||||
|
||||
<h1>Course Calendar</h1>
|
||||
|
||||
<?php
|
||||
/*<p class=DS_COVID>
|
||||
IMPORTANT NOTE: Due to COVID-19, all aspects of RPI's Spring 2022 Data
|
||||
Structures course will be
|
||||
conducted <a href="remote_learning.php">online</a> for the first two weeks. After
|
||||
that depends on RPI's decision, but hopefully labs and office hours will be in-person
|
||||
when allowed.
|
||||
</p>*/
|
||||
?>
|
||||
|
||||
<p class=DS_COVID>
|
||||
Lecture and lab topics are tentative and will be updated as the term progresses.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
<b>All times below are the
|
||||
<a href="https://www.google.com/search?q=america+newyork+time+zone">America/New York timezone</a>.</b>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
<table border="1px" align="top" bgcolor="ffffff" width="100%" >
|
||||
<table border="1px" cellpadding="5" cellspacing="0" width="100%">
|
||||
|
||||
<tr>
|
||||
<td width="8%" class=calendar_white><b>Monday</b></td>
|
||||
<td width="23%" class=calendar_white><b>Tuesday</b></td>
|
||||
<td width="23%" class=calendar_white><b>Wednesday</b></td>
|
||||
<td width="23%" class=calendar_white><b>Thursday</b></td>
|
||||
<td width="23%" class=calendar_white><b>Friday</b></td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
|
||||
|
||||
/* ------------------------------------------------- */
|
||||
print '<tr>';
|
||||
makeday ("Aug 28","First Day of Classes");
|
||||
makelecture ("Aug 29");
|
||||
makelab ("Aug 30");
|
||||
blank();
|
||||
makelecture ("Sep 1");
|
||||
print '</tr>';
|
||||
|
||||
|
||||
print '<tr>';
|
||||
makeday ("Sep 4","Labor Day, No classes");
|
||||
makeday ("Sep 5", "Monday schedule");
|
||||
//makelecture ("Sep 5");
|
||||
makelab ("Sep 6");
|
||||
makehomework("Sep 7");
|
||||
makelecture ("Sep 8");
|
||||
print '</tr>';
|
||||
|
||||
print '<tr>';
|
||||
blank();
|
||||
makelecture ("Sep 12");
|
||||
makelab ("Sep 13");
|
||||
makehomework("Sep 14");
|
||||
makelecture ("Sep 15");
|
||||
print '</tr>';
|
||||
|
||||
|
||||
print '<tr>';
|
||||
blank();
|
||||
makelecture ("Sep 19");
|
||||
makelab ("Sep 20");
|
||||
//makehomework("Feb 3");
|
||||
maketest("Sep 21");
|
||||
makelecture ("Sep 22");
|
||||
print '</tr>';
|
||||
|
||||
|
||||
print '<tr>';
|
||||
blank();
|
||||
makelecture ("Sep 26");
|
||||
makelab ("Sep 27");
|
||||
makehomework("Sep 28");
|
||||
makelecture ("Sep 29");
|
||||
print '</tr>';
|
||||
|
||||
|
||||
print '<tr>';
|
||||
//makeday ("Feb 15");
|
||||
blank();
|
||||
makelecture ("Oct 3");
|
||||
makelab ("Oct 4");
|
||||
makehomework("Oct 5");
|
||||
//maketest ("Feb 18");
|
||||
makelecture ("Oct 6");
|
||||
print '</tr>';
|
||||
|
||||
|
||||
print '<tr>';
|
||||
makeday ("Oct 9", "Columbus Day, No classes");
|
||||
//makeday ("Oct 10", "Monday schedule");
|
||||
makelecture ("Oct 10");
|
||||
makelab ("Oct 11");
|
||||
makehomework("Oct 12");
|
||||
makelecture ("Oct 13");
|
||||
print '</tr>';
|
||||
|
||||
|
||||
print '<tr>';
|
||||
blank();
|
||||
makelecture ("Oct 17");
|
||||
makelab ("Oct 18");
|
||||
maketest("Oct 19");
|
||||
//makelecture ("Mar 3","Last day to drop classes");
|
||||
makelecture ("Oct 20");
|
||||
//makeday("Oct 20","DS Lecture cancelled. Last day to drop classes");
|
||||
print '</tr>';
|
||||
|
||||
|
||||
/*print '<tr>';
|
||||
//makeday ("Oct 12","No classes");
|
||||
blank();
|
||||
makelecture ("Mar 8");
|
||||
makelab ("Mar 9");
|
||||
//makehomework("Mar 10");
|
||||
maketest ("Mar 10");
|
||||
makelecture ("Mar 11");
|
||||
print '</tr>';*/
|
||||
|
||||
//print '<tr>';
|
||||
//makeday ("Mar 6-10","Spring Break",5);
|
||||
//print '</tr>';
|
||||
|
||||
print '<tr>';
|
||||
blank();
|
||||
makelecture ("Oct 24");
|
||||
makelab ("Oct 25");
|
||||
makehomework("Oct 26");
|
||||
makelecture ("Oct 27");
|
||||
print '</tr>';
|
||||
|
||||
//GM WEEK
|
||||
print '<tr>';
|
||||
blank ();
|
||||
makelecture ("Oct 31");
|
||||
//makeday ("Mar 22", "DS Lecture cancelled");
|
||||
makelab ("Nov 1");
|
||||
//makeday ("Nov 1","GM Wednesday, no lab");
|
||||
makehomework("Nov 2");
|
||||
makelecture ("Nov 3");
|
||||
//makeday ("Mar 25", "DS Lecture cancelled");
|
||||
print '</tr>';
|
||||
|
||||
print '<tr>';
|
||||
blank ();
|
||||
makelecture ("Nov 7");
|
||||
makelab ("Nov 8");
|
||||
makehomework("Nov 9");
|
||||
makelecture ("Nov 10");
|
||||
print '</tr>';
|
||||
|
||||
|
||||
print '<tr>';
|
||||
blank();
|
||||
//makeday ("Apr 4","Pass/No Credit Deadline");
|
||||
makelecture ("Nov 14");
|
||||
makelab ("Nov 15");
|
||||
maketest("Nov 16");
|
||||
makelecture ("Nov 17");
|
||||
print '</tr>';
|
||||
|
||||
print '<tr>';
|
||||
blank ();
|
||||
makelecture ("Nov 21");
|
||||
//makelab ("Nov 22");
|
||||
//makehomework("Nov 23");
|
||||
makeday ("Nov 22-24","Thanksgiving Break, no classes",3);
|
||||
//makelecture ("Nov 24","Pass/No Credit Deadline");
|
||||
print '</tr>';
|
||||
|
||||
print '<tr>';
|
||||
blank ();
|
||||
makelecture ("Nov 28");
|
||||
makelab ("Nov 29");
|
||||
makehomework("Nov 30");
|
||||
makelecture ("Dec 1");
|
||||
|
||||
print '</tr>';
|
||||
|
||||
print '<tr>';
|
||||
blank ();
|
||||
makelecture ("Dec 5");
|
||||
makelab ("Dec 6");
|
||||
//makelab ("Dec 6","Last Day of Classes");
|
||||
makehomework("Dec 7");
|
||||
makelecture ("Dec 8");
|
||||
//makeday ("Dec 7-8","Reading Days",2);
|
||||
print '</tr>';
|
||||
|
||||
print '<tr>';
|
||||
makeday ("Dec 11-13","Reading Days",3);
|
||||
makeday ("Dec 14","Other RPI Final Exams",1,"grey");
|
||||
maketest ("Dec 15");
|
||||
//makelab ("Dec 6","Last Day of Classes");
|
||||
print '</tr>';
|
||||
|
||||
print '<tr>';
|
||||
makeday ("Dec 18-20","Other RPI Final Exams",3,"grey");
|
||||
//makeday ("May 1-5","RPI Final Exams",5,"grey");
|
||||
print '</tr>';
|
||||
|
||||
/*
|
||||
print '<tr>';
|
||||
makeday ("Dec 12-14","Reading Days",1);
|
||||
makeday ("Dec 15-16","Other RPI Final Exams",2,"grey");
|
||||
maketest ("Dec 17");
|
||||
makeday ("Dec 18","Other RPI Final Exams",1,"grey");
|
||||
print '</tr>';
|
||||
|
||||
print '<tr>';
|
||||
makeday ("Dec 21","Other RPI Final Exams",1,"grey");
|
||||
blank (4);
|
||||
print '</tr>';
|
||||
*/
|
||||
|
||||
|
||||
|
||||
?>
|
||||
|
||||
|
||||
</table>
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
74
php/crash_course_cpp_syntax.php
Executable file
74
php/crash_course_cpp_syntax.php
Executable file
@@ -0,0 +1,74 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.crash_course_in_cpp-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.crash_course_in_cpp-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before_crash_course.php'; ?>
|
||||
|
||||
<h1>Crash Course in C++ Syntax</h1>
|
||||
|
||||
<p class=DS_P>
|
||||
We have developed a set of lessons on Submitty that
|
||||
aim to transition you from another programming language to C++. These
|
||||
exercises are targeted to students who've successfully completed
|
||||
Computer Science 1 at RPI and learned Python, or students who earned
|
||||
college credit for the Computer Science AP Test in Java, or students
|
||||
who have done other formal coursework in or self-taught Introductory
|
||||
Programming.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1199">https://submitty.cs.rpi.edu/courses/f23/csci1199</a>
|
||||
<br>
|
||||
<em>All Students registered for CSCI 1200 Data Structures, Fall 2023
|
||||
have been added to this second (not for credit, not for a grade)
|
||||
Submitty course. Contact the instructor if you do not have
|
||||
access.</em>
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
The problems were designed by members of the teaching staff with years
|
||||
of experience working one-on-one with Data Structures students and
|
||||
highlight some of the common C++ syntax that trip up new C++
|
||||
programmers. We recommend you read through the material and work
|
||||
through the problems during the first week or two of Data
|
||||
Structures. However, note that <em>these exercises are completely
|
||||
optional and will not be used to compute your final grade in Data
|
||||
Structures.</em>
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
Some of these exercises are rather subtle. You many need to study the
|
||||
code carefully to spot the differences. Carefully reading code is an
|
||||
essential skill for all programmers. If a specific problem has
|
||||
stumped you, please ask a member of the teaching staff in office
|
||||
hours.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
Note: The exercises in the Crash Course for C++ Syntax
|
||||
are <b><em>NOT</em></b> typical of the problems you will see on the
|
||||
Data Structures tests and the final exam. The Data Structures test
|
||||
questions will not focus on "tricks" of C++ syntax, but rather on bigger
|
||||
picture, fundamental concepts of Data Structures theory and practice.
|
||||
</p>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
<b><em>
|
||||
Be sure to click through the other pages linked on the left sidebar menu.
|
||||
</em></b>
|
||||
</p>
|
||||
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
151
php/development_environment.php
Executable file
151
php/development_environment.php
Executable file
@@ -0,0 +1,151 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.cpp-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.cpp-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="left-sidebox">
|
||||
<h1>C++ Installation Choices for Your Operating System</h1>
|
||||
</td>
|
||||
<td class="right-sidebox">
|
||||
<div id="side-nav-buttons" class="my_sidebox">
|
||||
<ul class="sidebox">
|
||||
<li><a href="development_environment.php" class="nav-row cpp-selected sidebox">C++ Installation Choices for Your Operating System</a></li>
|
||||
<li><a href="wsl.php" class="nav-row">Using Windows Subsystem for Linux (WSL)</a></li>
|
||||
<li><a href="editors_ides.php" class="nav-row" id=nav-sidebar>Editors, Compilers, and IDEs</a></li>
|
||||
<li><a href="memory_debugging.php" class="nav-row">Memory Debugging</a></li>
|
||||
<li><a href="installation_test.php" class="nav-row">Test Your Installation</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</table>
|
||||
|
||||
<p class=DS_P>
|
||||
Depending on the native operating system for your computer, you have
|
||||
several different options for C++ development with GNU g++ or LLVM
|
||||
clang++. More information on each choice is below and on other pages.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Windows 10</h2>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><a href="wsl.php">Windows Subsystem for Linux (WSL)</a> <em>Recommended</em>
|
||||
<li class=DS_LI>g++ or clang++ with Ubuntu/other GNU/Linux in VirtualBox
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>MacOSX</h2>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI>clang++ in the Terminal or XCode IDE
|
||||
<li class=DS_LI>g++ or clang++ with Ubuntu/other GNU/Linux in VirtualBox
|
||||
</ul>
|
||||
|
||||
<p class=DS_ALERT>
|
||||
Note: The memory debugging software has not yet be updated to run on the Mac M1/M2 ARM processors.
|
||||
</p>
|
||||
|
||||
<h2>GNU/Linux</h2>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI>g++ or clang++
|
||||
</ul>
|
||||
|
||||
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
NOTE: It is possible to run a true dual-boot on Windows or Mac by
|
||||
partitioning your hard drive and installing a GNU/Linux distribution
|
||||
there, but it requires a more complicated setup. Only do this if you
|
||||
really know what you're doing. Instructions exist online for how to
|
||||
do this, but it is possible to brick your machine this way and course
|
||||
staff won't necessarily be able to help you with any issues you
|
||||
encounter.
|
||||
</p>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<h2>MacOSX XCode</h2>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
If you're using a Mac, you'll need to install XCode, which is a free
|
||||
download from the Apple App store. XCode provides both a C++ compiler
|
||||
(technically the LLVM <tt>clang++</tt> compiler) <em>and</em> an
|
||||
integrated development environment (IDE) similar to Microsoft's Visual
|
||||
Studio.
|
||||
</p>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
Make sure to install XCode's "Command Line Tools" so that you can run
|
||||
the compiler from the Terminal command line. NOTE: Even if you plan
|
||||
to use the XCode IDE for the bulk of your development & testing, in
|
||||
lab & office hours we will usually ask you to demo your program from
|
||||
the Terminal command line.
|
||||
</p>
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
|
||||
<h2>Ubuntu in VirtualBox</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
Here are some install instructions on installing Ubuntu in
|
||||
VirtualBox. If you want a different operating system, you can
|
||||
generally use the same instructions and just substitute the OS image
|
||||
you have for the Ubuntu one referenced in the instructions.
|
||||
</p>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><b>Windows:</b>
|
||||
<a href="http://www.psychocats.net/ubuntu/virtualbox">http://www.psychocats.net/ubuntu/virtualbox</a>
|
||||
|
||||
<li class=DS_LI><b>Mac:</b>
|
||||
<a href="http://www.simplehelp.net/2015/06/09/how-to-install-ubuntu-on-your-mac/">http://www.simplehelp.net/2015/06/09/how-to-install-ubuntu-on-your-mac/</a>
|
||||
</ul>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<h2>g++ or clang++ on Ubuntu:</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
Installing g++ or clang++ on Ubuntu (and many other GNU/Linux
|
||||
variants) is as simple as running the following
|
||||
commands in a terminal:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
sudo apt-get install g++ gdb
|
||||
sudo apt-get install clang-10 lldb
|
||||
sudo apt-get install gcc-multilib g++-multilib
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<p class=DS_P>
|
||||
<b><em>
|
||||
Be sure to click through the other pages linked in the upper right
|
||||
menu.
|
||||
</em></b>
|
||||
</p>
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
192
php/editors_ides.php
Executable file
192
php/editors_ides.php
Executable file
@@ -0,0 +1,192 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.cpp-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.cpp-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="left-sidebox">
|
||||
<h1>Editors, Compilers, and IDEs</h1>
|
||||
</td>
|
||||
<td class="right-sidebox">
|
||||
<div id="side-nav-buttons" class="my_sidebox">
|
||||
<ul class="sidebox">
|
||||
<li><a href="development_environment.php" class="nav-row">C++ Installation Choices for Your Operating System</a></li>
|
||||
<li><a href="wsl.php" class="nav-row">Using Windows Subsystem for Linux (WSL)</a></li>
|
||||
<li><a href="editors_ides.php" class="nav-row cpp-selected sidebox" id=nav-sidebar>Editors, Compilers, and IDEs</a></li>
|
||||
<li><a href="memory_debugging.php" class="nav-row">Memory Debugging</a></li>
|
||||
<li><a href="installation_test.php" class="nav-row">Test Your Installation</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</table>
|
||||
|
||||
|
||||
<h2>Code (and Plaintext) Viewers/Editors</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
Many different text/code editors are available for all of the
|
||||
different operating systems. You'll want to pick an helpful editor
|
||||
that color-highlights your code and helps with indentation. Also note
|
||||
that use and display of "newlines" in plaintext files is not
|
||||
standardized on UNIX/GNU Linux platforms vs. Windows. There are several
|
||||
characters that are used to represent end-of-line/carriage return. We
|
||||
will always use '<tt>\n</tt>' (newline) in this course. This is the UNIX/GNU Linux
|
||||
way. Please do not use '<tt>\m</tt>' or '<tt>\r</tt>' in this course, it won't match the
|
||||
output we are expecting on the homework submission server. In order
|
||||
to examine the provided code & sample output & your own output, you'll
|
||||
want to make sure you find a text viewer/editor that correctly
|
||||
displays newlines ('<tt>\n</tt>').
|
||||
</p>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
Some recommended code/text editor options:
|
||||
</p>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><a href="http://www.sublimetext.com/">Sublime Text</a>
|
||||
<li class=DS_LI><a href="http://www.gnu.org/software/emacs">Emacs</a><br>
|
||||
<li class=DS_LI><a href="http://www.vim.org/">VI/Vim
|
||||
<li class=DS_LI><a href="http://notepad-plus-plus.org/">notepad++</a> (windows only)
|
||||
<li class=DS_LI><a href="https://wiki.gnome.org/Apps/Gedit">Gedit</a>
|
||||
<li class=DS_LI><a href="http://www.nano-editor.org/">Nano</a>
|
||||
</ul>
|
||||
|
||||
<p class=DS_P>
|
||||
Also, ask your graduate TAs & undergraduate programming mentors what
|
||||
editor and/or integrated development environment (see below) they choose and why
|
||||
it's their favorite.
|
||||
</p>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
|
||||
<h2>C++ Compilers</h2>
|
||||
|
||||
<p class=DS_P> You may do your programming work for this course with
|
||||
any C++ compiler and development environment you wish, but your
|
||||
submitted homework code must compile and run on gcc/g++ 9.4 and
|
||||
llvm/clang++ 10.0 on Ubuntu 20.04. We understand that some of you may
|
||||
choose to use another compiler and development environment (e.g.,
|
||||
Microsoft Visual Studio) for most of your work. We are asking you to
|
||||
write portable code (for g++/clang++) because it is good programming
|
||||
practice and it allows us to significantly streamline the grading
|
||||
process for your TAs. This leaves more time for us to give
|
||||
constructive feedback on programming style, individual tutoring, and
|
||||
debugging help. </p>
|
||||
|
||||
<p class=DS_P>
|
||||
The good news is that the gcc/g++ and/or clang/clang++ compilers are
|
||||
available for every
|
||||
operating system, and you have a variety of different options for
|
||||
development environments. Note: Different
|
||||
gcc/g++ or clang/clang++
|
||||
compiler version numbers are ok -- you will probably
|
||||
not notice any differences. (Be sure to do a practice submit of
|
||||
your homework early enough each week to allow time to correct
|
||||
compilation issues.)
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
We recommend the
|
||||
<a href="http://clang.llvm.org/index.html">
|
||||
clang/LLVM compiler</a>, which has earned much praise for having
|
||||
clear and concise compiler error messages that are especially helpful
|
||||
for new C++ programmers. Once setup on your system, you simply
|
||||
substitute "<tt>clang++</tt>" for "<tt>g++</tt>" when you compile your
|
||||
program.
|
||||
</p>
|
||||
|
||||
<p class=DS_P><b>Note on C++11/C++14/etc.: </b> Many cool new C++
|
||||
language syntax features were introduced with C++11, C++14, and
|
||||
beyond. Not all operating systems/compilers support these new
|
||||
features out of the box (it is ok if your development environment does
|
||||
not support C++11 or C++14). Similarly, many large long-term or legacy
|
||||
open-source and commercial software projects cannot or choose not to use
|
||||
use some of the newest features.
|
||||
|
||||
We will avoid making use of these new features in most code
|
||||
examples and homework assignments for the course. Similarly, we ask
|
||||
that students limit the use of these features on their homework and
|
||||
tests to avoid portability issues or other confusion during grading.
|
||||
Some advanced features will not be allowed; for example,
|
||||
to demonstrate knowledge and mastery of types, students
|
||||
should explicitly write the type and not use the <tt>auto</tt> keyword
|
||||
when declaring variables. Please ask on the
|
||||
<a href="https://submitty.cs.rpi.edu/courses/s23/csci1200/forum">Discussion Forum</a>
|
||||
if you are unsure about whether you can use a specific syntax or function.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
We have organized alot of information on the<br>
|
||||
<a href="development_environment.php">
|
||||
C++ Installation Choices for Your Operating System</a>.
|
||||
</p>
|
||||
|
||||
<br>
|
||||
|
||||
<h2>C++ IDEs (Integrated Development Environments)</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
It's possible to do all of your work for this course with a simple
|
||||
text editor and command line compilation & running in a terminal. And
|
||||
many of us on the teaching staff prefer to code like this even for
|
||||
larger projects beyond this course!
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
Alternatively, you can do your work inside an Integrated Development
|
||||
Environment (IDE). Here are a few C++ development environments
|
||||
(similar to Visual Studio) that can be used with the GNU g++ or LLVM
|
||||
clang++ compilers. Note that the teaching staff many not be familiar
|
||||
with these specific tools and may not be able to help you if you get
|
||||
stuck.
|
||||
</p>
|
||||
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
<b>Eclipse</b><br>
|
||||
<a href="http://www.eclipse.org/cdt/">http://www.eclipse.org/cdt/</a>
|
||||
</p>
|
||||
|
||||
|
||||
<li class=DS_LI><p class=DS_P><b>wxDev-C++</b><br>
|
||||
<a href="http://wxdsgn.sourceforge.net/">http://wxdsgn.sourceforge.net/</a>
|
||||
</p>
|
||||
|
||||
|
||||
<li class=DS_LI><p class=DS_P><b>Code::Blocks</b><br>
|
||||
<a href="http://www.codeblocks.org/">
|
||||
http://www.codeblocks.org/</a>
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P><b>XCode (MaxOSX only)</b><br>
|
||||
<a href="https://developer.apple.com/xcode/">https://developer.apple.com/xcode/</a>
|
||||
|
||||
<li class=DS_LI><p class=DS_P><b>NetBeans</b><br>
|
||||
<a href="http://www.netbeans.org/features/cpp/">
|
||||
http://www.netbeans.org/features/cpp/</a><br>
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P><b>Anjuta</b><br>
|
||||
<a href="http://anjuta.sourceforge.net/">http://anjuta.sourceforge.net/</a>
|
||||
</p>
|
||||
</ul>
|
||||
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
154
php/getting_help.php
Executable file
154
php/getting_help.php
Executable file
@@ -0,0 +1,154 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.getting-help-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.getting-help-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="left-sidebox">
|
||||
<h1>Getting Help</h1>
|
||||
</td>
|
||||
<td class="right-sidebox">
|
||||
<div id="side-nav-buttons" class="my_sidebox">
|
||||
<ul class="sidebox">
|
||||
<li><a href="getting_help.php" class="nav-row getting-help-selected sidebox">Getting Help: Online Discussion, Office Hours, & Tutoring</a></li>
|
||||
<li><a href="references.php" class="nav-row">References: Textbooks & Web Resources</a></li>
|
||||
<li><a href="advice_S14.php" class="nav-row">Advice from Spring 2014 Data Structures Students</a></li>
|
||||
<li><a href="advice_F11.php" class="nav-row">Advice from Fall 2011 Data Structures Students</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
Your work on the homeworks and the labs for this course should be
|
||||
completed on your own, following the
|
||||
<a href="academic_integrity.php">Collaboration Policy</a>. However,
|
||||
you are encouraged to ask lots of questions about the material when
|
||||
you get stuck. Please ask your instructor, graduate TAs,
|
||||
undergraduate lab programming mentors, and fellow classmates for
|
||||
help. </p>
|
||||
|
||||
<p class=DS_P>
|
||||
Don't be shy or worried if you can't always figure things out all
|
||||
on your own. <em>Please ask for help.</em> We're happy to give
|
||||
you hints, programming tips, and guide you through debugging.
|
||||
</p>
|
||||
|
||||
<ul class=DS_UL>
|
||||
|
||||
<li class=DS_LI> <p class=DS_P> <a href="advice_TAs.php">Programming Advice from the TAs</a><br>
|
||||
Helpful hints about problem solving, debugging, compiling, C++, and
|
||||
good programming & commenting style. This advice will help you program and debug
|
||||
effectively and efficiently and ensure you earn maximum credit for your hard work. </p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
See also: <a href="advice_S14.php">Advice from former Data Structures students</a>
|
||||
</p>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Submitty Discussion Forum</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
Post your questions about homework and general questions on the
|
||||
Submitty <a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/forum">Discussion Forum</a>. The TAs, instructor, and other students will help answer
|
||||
your questions. Be sure not to post partial or full solutions to the
|
||||
lab or homework problems when asking your questions or answering a
|
||||
classmate's question. Posting a line or two of code that is causing a
|
||||
compiler syntax error is ok.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>If you registered at least a week before the first day
|
||||
of classes, you should be automatically added to Submitty, you will
|
||||
use your RPI RCS username & password to log in. Contact the
|
||||
instructor if you cannot access Submitty.
|
||||
</p>
|
||||
|
||||
<h2>Instructor & TA Office Hours</h2>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
A very important resource for help outside of class are the instructor
|
||||
and TA office hours. You may attend the office hours of any other TA
|
||||
(not just your lab TA) for questions about the course material or the
|
||||
homework. If you have questions about the grading of your homework,
|
||||
please see the TA who graded your assignment during their regular
|
||||
office hours or make an appointment.
|
||||
</p>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P> <a href="schedule.php">Weekly Office Hours Schedule</a>
|
||||
<br> Office hours get very busy as the deadline approaches. Start the
|
||||
homework early and take advantage of the less crowded office hours
|
||||
early in the week.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
<a href="index.php">Instructor & TA Contact Information</a>
|
||||
<br>
|
||||
Short questions about confidential matters over email are ok. But
|
||||
please come see us in office hours for more involved
|
||||
questions. <em>Please do not email your homework assignment to the
|
||||
instructor or TAs.</em> We can login and view your submitted homework
|
||||
files if you encounter a problem at submission time and have a short
|
||||
question related to homework submission.
|
||||
</p>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Additional Tutoring</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
In addition to the Instructor and TA Office Hours for the course, you
|
||||
may also want to check out:
|
||||
|
||||
<ul class=DS_UL> <li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
<a href="https://info.rpi.edu/advising-learning-assistance/learning-assistance/#TutoringServices">
|
||||
Advising & Learning Assistance Center (ALAC) Drop in Tutoring </a>
|
||||
|
||||
<br>Drop in Tutoring is staffed by upperclass Computer Science majors.
|
||||
Note that Drop in Tutoring tends to get busy and crowded on Wednesday
|
||||
and Thursday nights before a homework deadline.
|
||||
</p><p class=DS_P>
|
||||
ALAC can also connect you with upperclass students available to
|
||||
serve as one-on-one private tutors (generally for pay). </p>
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
<a href="https://www.cs.rpi.edu/~upe/tutoring.html">RPI's chapter of Upsilon Pi
|
||||
Epsilon (UPE)</a> offers CS tutoring to undergraduates.
|
||||
</p>
|
||||
|
||||
</ul>
|
||||
|
||||
<p class=DS_P>
|
||||
<b><em>
|
||||
Be sure to click through the other pages linked in the upper right
|
||||
menu.
|
||||
</em></b>
|
||||
</p>
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
6
php/global_colors.php
Executable file
6
php/global_colors.php
Executable file
@@ -0,0 +1,6 @@
|
||||
<style>
|
||||
:root {
|
||||
--sidebar-highlight-color: #ee9977;
|
||||
--special-text-color: #995533;
|
||||
}
|
||||
</style>
|
||||
188
php/good_programming.php
Executable file
188
php/good_programming.php
Executable file
@@ -0,0 +1,188 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.programming_information-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.programming_information-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="left-sidebox">
|
||||
<h1>Good Programming Practices</h1>
|
||||
</td>
|
||||
<td class="right-sidebox">
|
||||
<div id="side-nav-buttons" class="my_sidebox">
|
||||
<ul class="sidebox">
|
||||
<li><a href="programming_information.php" class="nav-row">Helpful C++ Programming Information</a></li>
|
||||
<li><a href="good_programming.php" class="nav-row programming_information-selected sidebox">Good Programming Practices</a></li>
|
||||
<li><a href="advice_TAs.php" class="nav-row">Programming Advice from the TAs</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</table>
|
||||
|
||||
|
||||
<h2>Good Programming Practices</h2>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
Points for programming assignments are awarded for error-free
|
||||
compilation, correct program output, and overall program
|
||||
structure. The program structure grade is an evaluation of the
|
||||
quality of your code. This includes the following:
|
||||
</p>
|
||||
|
||||
<ul class=DS_UL>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Your code should have a clear, logical organization. Functions
|
||||
should be written as appropriate to break up the program. Don't put
|
||||
all of your code in the main function. In general, each function
|
||||
should easily fit on a single screen and have a clear purpose.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Variable names and function names should be intuitive and
|
||||
meaningful. For example, if you need a variable to represent an
|
||||
employee's salary, use the name <tt>salary</tt>, not <tt>x</tt>.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Use sufficient comments to describe functions and significant
|
||||
sections of code. These don't have to be long and involved. Keep
|
||||
them short and clear. Remember, comments are your opportunity to
|
||||
explain your logic to the TAs. But comments are also a important
|
||||
piece of documentation for all software, to help future developers
|
||||
maintain and extend the code. (See examples below.)
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Use a consistent, logical method of indentation to make your
|
||||
program easy to read. For example, code inside a loop or if-else
|
||||
condition should be indented all at the same level (until reaching the
|
||||
inside of a nested loop or nested if-else construct).
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Don't type lines of text that are too wide to fit a typical
|
||||
text screen window (generally no more than 80-90 characters maximum).
|
||||
Break statements cleanly across multiple lines as needed.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Avoid the use of global variables. Global constants are
|
||||
generally fine.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Follow all instructions for the specific assignment about data
|
||||
structures required/not allowed, new class declarations, and use/modification of
|
||||
provided code.
|
||||
</p>
|
||||
|
||||
</ul>
|
||||
|
||||
<p class=DS_P> Use the example code given in class, in lab, and in the textbooks
|
||||
as guidelines. Programs that are unclear and do not compile will earn
|
||||
little or no credit.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
Program correctness will be determined by evaluating your program on a
|
||||
series of test data sets. We will make available some but not all of
|
||||
this data, along with sample output, prior to the assignment due
|
||||
date. This will help you judge the quality of your program, but will
|
||||
not guarantee correct results on all data. You will need to ensure
|
||||
this on your own by creating additional test cases.
|
||||
</p>
|
||||
|
||||
See also:
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><a href="Good_Programming_Practices.pdf">Good Programming
|
||||
Practices</a><br>Slides from an ALAC tutorial by Andrew Showers and
|
||||
Salles Viana.
|
||||
</p>
|
||||
</ul>
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
<h2>Examples of Commenting</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
Most functions should have at least one comment (usually at the top)
|
||||
explaining what the function does. And functions of more than a
|
||||
couple lines should have addtional comments explaining the logic
|
||||
within the function body. Of course, in some situations, a function
|
||||
does not need comments (when the function's behaviour is obvious).
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
We suggest you avoid adding comments that do not help in the
|
||||
understanding of the program. For example:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
string getNameOfRecipe() { // function that gets the name of the recipe
|
||||
|
||||
}
|
||||
</pre>
|
||||
|
||||
<p class=DS_P>
|
||||
The comment above is not useful (it is obvious
|
||||
that <tt>getNameOfRecipe()</tt> is a function and it is obvious that
|
||||
it returns the name of the recipe). However, if the name of the
|
||||
function was <tt>getNR()</tt> it would be useful to add comments explaining
|
||||
that this function returns the name of the recipe. <em>NOTE: It is better to use
|
||||
a descriptive name for the function than rely on comments!</em>
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
Another example:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
double getRoot(double a,double b, double c) { // get root function
|
||||
double d; // declare d as a double
|
||||
d = b*b - 4*a*c;
|
||||
double root = (-b + sqrt( d ))/(2*a); // compute the root
|
||||
return root; // return the result
|
||||
}
|
||||
</pre>
|
||||
|
||||
<p class=DS_P>
|
||||
The comments above are also not useful (it is obvious that the return
|
||||
statement returns something; it is obvious that this is the "get root
|
||||
function").
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
Here is a much more informative commenting of the same code:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
// This functions receives the coefficients of an equation in the form
|
||||
// ax2+bx+c=0 and returns one of its roots.
|
||||
// Attention: We assume that the equation has at least one real root.
|
||||
double getRoot(double a,double b, double c) {
|
||||
double delta = b*b - 4*a*c;
|
||||
// We use Bhaskara's formula to compute one of the roots
|
||||
double root = (-b + sqrt( delta ))/(2*a);
|
||||
return root;
|
||||
}
|
||||
</pre>
|
||||
|
||||
<p class=DS_P>
|
||||
|
||||
</p>
|
||||
<p class=DS_P>
|
||||
See also the main <a href="grading.php">Course Grades</a> page, the
|
||||
and the <a href="advice_TAs.php">Programming Advice from TAs</a> page for more
|
||||
information.
|
||||
</p>
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
171
php/grading.php
Executable file
171
php/grading.php
Executable file
@@ -0,0 +1,171 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.syllabus-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.syllabus-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="left-sidebox">
|
||||
<h1>Course Grades</h1>
|
||||
</td>
|
||||
<td class="right-sidebox">
|
||||
<div id="side-nav-buttons" class="my_sidebox">
|
||||
<ul class="sidebox">
|
||||
<li><a href="syllabus.php" class="nav-row">Syllabus</a></li>
|
||||
<li><a href="grading.php" class="nav-row syllabus-selected sidebox">Course Grades</a></li>
|
||||
<li><a href="lecture_polls.php" class="nav-row">Submini Lecture Polls</a></li>
|
||||
<li><a href="homework_policies.php" class="nav-row">Homework Policies</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
<h2>Submini Lecture Polls</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
Each lecture will include several multiple-choice polls that
|
||||
will help you gauge your understanding of new
|
||||
material and collect feedback for the teaching staff. Participation
|
||||
and timely completion of these exercises is strongly encouraged;
|
||||
however, <a href="lecture_polls.php">Submini Lecture Polls</a>
|
||||
will not be directly factored into the semester average.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Lab Assignments</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
There will be a total of 14 programming labs, one each week. Labs are
|
||||
graded on a scale of 0-3, depending on the amount and quality of work
|
||||
completed. Labs are designed so that students who work diligently can
|
||||
earn all 3 points. You must attend your assigned lab section unless
|
||||
prior arrangements have been made with the graduate TA for your lab
|
||||
section (see <a href="schedule.php">Schedule</a>). To receive credit
|
||||
for the lab exercises, the work must be completed in lab and approved
|
||||
by the lab TA before the end of lab -- <em> 10 minutes before the hour</em>. TAs
|
||||
and undergraduate programming mentors are available in lab to answer
|
||||
your questions as well as check off your work. Don't wait until the
|
||||
end of lab to ask questions or show your work.</p>
|
||||
|
||||
<p class=DS_P> Lab instructions and a subset of the lab problems will be posted
|
||||
on the course website by Tuesday early evening, before each
|
||||
Wednesday lab. Students are encouraged to read through the materials
|
||||
and get started on the exercises before their assigned lab section.
|
||||
Additional problems will be distributed at the start of the lab.
|
||||
Students should bring their laptop, any optional references, and recent
|
||||
lecture notes to lab. </p>
|
||||
|
||||
<p class=DS_P>
|
||||
Internet access during labs is restricted to lab file downloads and
|
||||
standard programming reference material only. Reading or sending
|
||||
email, instant messages, social media, text messages, cell phone use,
|
||||
playing video games, etc. is disallowed during lab. Students who
|
||||
violate the policy will receive a 0 for the lab and be asked to leave.
|
||||
</p>
|
||||
|
||||
<h2>Homeworks</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
There will be 10 homework assignments, one each week, except for weeks
|
||||
when a test is scheduled. Assignments will be submitted
|
||||
electronically and are due on Thursdays by 11:59pm. <em>Please do not
|
||||
email your homework assignment to the instructor or graduate TA.</em>
|
||||
Homework assignments will be made available on the course web site at
|
||||
least one week before the deadline and all material for the homework
|
||||
will be covered by the end of Friday's lecture. Students are
|
||||
encouraged to start the assignments over the weekend, and ask the
|
||||
instructor and TAs questions about the homework on
|
||||
the <a href="https://submitty.cs.rpi.edu/courses/f22/csci1200/forum">Discussion Forum</a> or in office hours early
|
||||
in the week.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
See the <a href="homework_policies.php">Homework Policies</a> page, the <a
|
||||
href="academic_integrity.php">Collaboration Policy & Academic Integrity</a> page, the <a
|
||||
href="good_programming.php">Good Programming Practices</a>, and the <a
|
||||
href="advice_TAs.php">Programming Advice from TAs</a> page for more
|
||||
information.
|
||||
</p>
|
||||
|
||||
<h2>Tests and Final Exam</h2>
|
||||
|
||||
<p class=DS_P> Three tests will be given during the Thursday evening test block.
|
||||
A cumulative final exam will be scheduled during finals week. These
|
||||
are pencil-and-paper tests that will focus on problem solving by
|
||||
writing C++ code. The exams will also include short answer and
|
||||
diagram-based questions. Sample exam problems from prior semesters
|
||||
will be distributed about a week before each exam. </p>
|
||||
|
||||
<p class=DS_P> The course material is cumulative and students should strive to
|
||||
improve their performance on each subsequent test. When a student
|
||||
"beats" their previous test score, the previous test score will be
|
||||
replaced with the average of the two scores. For example, if a
|
||||
student gets a 70 on Test 1 and an 82 on Test 2, the first test score
|
||||
will be replaced by the average of Tests 1 & 2 = 76. If the student
|
||||
then earns an 88 on Test 3, the second test score will be replaced
|
||||
with the average of 82 and 88 = 85. (Note that we don't go back and
|
||||
re-adjust Test 1). And similarly, the score for Test 3 will be
|
||||
adjusted if the student's performance on the final exam improves upon their
|
||||
performance for Test 3.</p>
|
||||
|
||||
<p class=DS_P>
|
||||
<em> Important Note: We will not provide a makeup exam unless the
|
||||
absence is <a href="https://success.studentlife.rpi.edu/current-students/academic-and-personal-support/requesting-excused-absence"> officially excused by the appropriate office</a>.</em> </p>
|
||||
|
||||
|
||||
<h2>Semester Average</h2>
|
||||
|
||||
<p class=DS_P> Your final grade in this class combines your performance on the
|
||||
lab exercises, homeworks, and exams as follows:
|
||||
</p>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI>Labs: 15%
|
||||
<li class=DS_LI>Homeworks: 35%
|
||||
<li class=DS_LI>Tests: 30%
|
||||
<li class=DS_LI>Final Exam: 20%
|
||||
</ul>
|
||||
|
||||
<p class=DS_P> All components of the class are graded on a curve. What does
|
||||
this mean? The homeworks and exams will contain challenging
|
||||
problems and the grade breakdown will likely be lower than the typical
|
||||
90%=A, 80%=B, etc. We will announce the curve for each exam and
|
||||
homework when the grades are returned.</p>
|
||||
|
||||
<p class=DS_P><em> Important Note: You must have a passing average on each component (labs,
|
||||
homeworks, and exams) in order to pass the course.</em>
|
||||
</p>
|
||||
|
||||
<h2>Rainbow Grades Summary</h2>
|
||||
|
||||
<p class=DS_P>Please regularly check the grades recorded in Rainbow
|
||||
Grades on Submitty and let us know if you spot a data entry error.
|
||||
This chart will allow you to gauge your overall performance relative
|
||||
to the class average and the estimate for the grade boundaries. Here
|
||||
is a example of what the grade summary will look like: </p>
|
||||
|
||||
<img width=700 src="images/sample_student.png">
|
||||
|
||||
<p class=DS_P></p>
|
||||
|
||||
<p class=DS_P>
|
||||
<em>Note: Because the exams and homeworks change from year-to-year,
|
||||
the curve for each homework/exam and the final average will be
|
||||
adjusted accordingly and will not be exactly the same as this
|
||||
sample</em>. </p>
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
226
php/homework_policies.php
Executable file
226
php/homework_policies.php
Executable file
@@ -0,0 +1,226 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.syllabus-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.syllabus-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="left-sidebox">
|
||||
<h1>Homework Policies</h1>
|
||||
</td>
|
||||
<td class="right-sidebox">
|
||||
<div id="side-nav-buttons" class="my_sidebox">
|
||||
<ul class="sidebox">
|
||||
<li><a href="syllabus.php" class="nav-row">Syllabus</a></li>
|
||||
<li><a href="grading.php" class="nav-row">Course Grades</a></li>
|
||||
<li><a href="lecture_polls.php" class="nav-row">Submini Lecture Polls</a></li>
|
||||
<li><a href="homework_policies.php" class="nav-row syllabus-selected sidebox">Homework Policies</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
<h2>Electronic Submission</h2>
|
||||
|
||||
<p class=DS_P> Homework assignments are due Thursday nights at 11:59pm
|
||||
(<a href="https://www.google.com/search?q=america+newyork+time+zone">America/New York timezone</a>).
|
||||
Homework is submitted electronically
|
||||
and submission times are judged by the webserver timestamp. If your
|
||||
submission is one minute late, it is a day late, so we suggest that
|
||||
you don't actually wait until the last minute. You may submit your
|
||||
assignment multiple times -- we will only grade your last submission
|
||||
(or you may specify which version we should grade). Please see
|
||||
the <a href="course_calendar.php">Course Calendar</a> for the homework assignments
|
||||
and due dates. </p>
|
||||
|
||||
<p class=DS_P> <font class="italics">Note: Please do not email your
|
||||
homework assignment to the instructor or the TAs (unless explicitly
|
||||
requested to do so).</font>
|
||||
We will only grade material submitted to the
|
||||
homework submission server. We can login and view your submitted
|
||||
homework files if you encounter a problem at submission time. Please
|
||||
check the discussion forum for announcements about the current
|
||||
homework and ask a new question if you do not see a similar question and
|
||||
answer that helps you.
|
||||
</p>
|
||||
|
||||
<h2>Late Day Policy</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
Each student will initially be given one day (whole or partial) of
|
||||
grace for late homework assignments. Through consistent participation
|
||||
and solid performance on <a href="lecture_polls.php">Lecture Participation Polls</a>
|
||||
each student <em>may earn additional late days</em>.
|
||||
These grace days are intended to cover minor illnesses, hardware
|
||||
malfunctions, and schedule conflicts with homeworks/tests in your
|
||||
other classes.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
To use a late day, simply submit the assignment as normal through the
|
||||
homework submission link. You do not need to notify your TA or
|
||||
instructor. For example, an assignment submitted 22 hours late
|
||||
(Friday evening at 10:00pm) counts as 1 late day used. As another
|
||||
example, an assignment submitted 26 hours late (Saturday morning at
|
||||
2:00am) counts as 2 late days used. <em>No more than two late days
|
||||
may be used for any one assignment.</em> Once your late days have
|
||||
been exhausted, late assignments will not be accepted without an
|
||||
<a href="https://success.studentlife.rpi.edu/current-students/academic-and-personal-support/requesting-excused-absence">official excused absense</a>.</em> </p>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
Students should use their late days carefully, saving them for the
|
||||
latter part of the semester or (better yet) not using them at all.
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<h2>Prepare Your Assignment for Submission</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
<font style="font-weight:bold; color:var(--special-text-color);">
|
||||
Make sure you read and follow the <a href="academic_integrity.php">
|
||||
Collaboration Policy and Academic Integrity</a> statement which
|
||||
applies to all homework assignments.
|
||||
</font>
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
Once you've finished writing, testing, debugging, and commenting your
|
||||
code, re-read the assignment description and collect all of the
|
||||
necessary files for submission. Be sure to include your plaintext
|
||||
README.txt (use the provided template for the assignment), your .cpp
|
||||
and .h code files, and any other files specifically requested for the
|
||||
assignment. You do not need to include any compiled object files or
|
||||
the executable. Submitty will ignore these files if they are
|
||||
included. You do not need to include any of the provided input data
|
||||
files or your output files for the basic homework --- these will be
|
||||
re-generated by Submitty. But you should include any new data input
|
||||
files and corresponding output for any extra credit you completed, as
|
||||
described in the assignment description.
|
||||
</p>
|
||||
|
||||
<p class=DS_P> Next, click the "Gradeables" link from the top of the
|
||||
left sidebar to access Submitty. <em>You will use your RCS ID and
|
||||
password to access this page.</em> Access to Submitty is
|
||||
automatically given to all registered students (but it can take a day
|
||||
or two). Contact the instructor if you are registered for the course
|
||||
but cannot successfully login to Submitty.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>Choose the appropriate assignment from the navigation
|
||||
page. Drag and drop your files into the indicated area(s) or click to
|
||||
launch a file browser. Press "Submit" to upload your
|
||||
homework.
|
||||
</p>
|
||||
|
||||
<p class=DS_P> <font class="italics">Note: Please do not email your
|
||||
homework assignment to the instructor or the TAs (unless explicitly
|
||||
requested to do so).
|
||||
</font> </p>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<h2>Automated Compilation, Testing, and Grading</h2>
|
||||
|
||||
<p class=DS_P> Submitty will compile your code with Ubuntu 20.04 gcc/g++
|
||||
9.4 and/or llvm/clang++ 10.0 and then run the resulting executable on
|
||||
several test cases. It will inform you of any compile, link, and
|
||||
runtime errors or warnings and will present the results of these tests
|
||||
for your review. Your grade for the homework will be a combination of
|
||||
this online testing of your code and (later) a TA's review of the
|
||||
structure, efficiency, and overall quality of your code (see
|
||||
also <a href="good_programming.php">Good Programming Practices</a> and
|
||||
<a href="advice_TAs.php">Advice from TAs</a>), plus the TA's
|
||||
grading of any additional non-code parts of the assignment. </p>
|
||||
|
||||
<p class=DS_P>You will have practice using the submission process during the
|
||||
first lab. Please see a TA during office hours if you need additional
|
||||
help writing portable code.
|
||||
</p>
|
||||
|
||||
|
||||
<p class=DS_P>Carefully check the result of your submission. Verify that all
|
||||
necessary files were received by Submitty. Confirm that your code
|
||||
compiled and ran successfully. If you find a mistake in your
|
||||
homework, you can fix it and re-submit using the same procedure. We
|
||||
will only grade the most recent submission. Please see a TA in office
|
||||
hours if you need help preparing your assignment for successful
|
||||
submission. If the automatic grading of your homework seems incorrect
|
||||
or unfair please use the discussion forum and/or see the instructor or a
|
||||
TA in office hours. You may make a note to the TAs in your README.txt
|
||||
file about problems with the automated grading; however, the TAs will not
|
||||
edit the automated grading scores.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
<em class=DS_EM>NOTE: Some of the automated test cases on Submitty
|
||||
will be labeled "Hidden".</em> These additional tests with novel
|
||||
inputs are intended to prevent "hardcoding" to a limited set of known
|
||||
inputs, and to encourage students to think carefully about "corner
|
||||
cases" when writing their programs. Other than the title of the test
|
||||
case, the details of these tests will not be made available to
|
||||
students before the deadline. After the deadline has passed, and the
|
||||
TAs have finished their manual grading, your numeric scores for the
|
||||
hidden tests will be available, but the details of these tests will
|
||||
probably remain hidden. Students may see the instructor or TA in
|
||||
office hours to ask questions about the hidden test cases after grades
|
||||
have been returned.
|
||||
</p>
|
||||
|
||||
<h3>Note on # of submissions:</h3>
|
||||
|
||||
<p class=DS_P>
|
||||
Do not use Submitty as
|
||||
your sole development/testing platform. You should use your laptop as
|
||||
your primary testing & debugging interface. However, don't wait until
|
||||
the last minute to submit for the first time. You should do an early
|
||||
practice submission of a partially working version of the homework to
|
||||
confirm you are on the right track. A small point penalty will be
|
||||
assessed if the count of your submission attempts is greater than 20
|
||||
for any one homework assignment. </p>
|
||||
|
||||
<h3>Note on submission file size:</h3>
|
||||
|
||||
<p class=DS_P>
|
||||
If you accidentally include lots of unnecessary "stuff" in your
|
||||
uploaded files, it may be too big for submission. If you think you
|
||||
have included only the necessary files and yet Submitty still
|
||||
complains about the size of your submission, please check the
|
||||
<a href="https://submitty.cs.rpi.edu/courses/s23/csci1200/forum">Discussion Forum</a>
|
||||
for announcements, and ask a question if no one else
|
||||
has yet encountered this problem for this homework -- <em>please don't
|
||||
send your homework files by email!</em> </p>
|
||||
|
||||
|
||||
<h3>Note on the submission server:</h3>
|
||||
|
||||
<p class=DS_P>
|
||||
If Submitty crashes or is unresponsive, or if your submission attempt
|
||||
fails and you cannot make sense of the Submitty output, check
|
||||
the <a href="https://submitty.cs.rpi.edu/courses/s23/csci1200/forum">Discussion
|
||||
Forum</a> for announcements, and ask a question if no one else
|
||||
has yet encountered this problem for this homework -- <em>please don't
|
||||
send your homework files by email!</em> </p>
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
172
php/index.php
Executable file
172
php/index.php
Executable file
@@ -0,0 +1,172 @@
|
||||
<script type="text/javascript">
|
||||
<!-- Begin
|
||||
function mailnospam(user, site) {
|
||||
document.write('<a href=\"mailto:' + user + '@' + site + '\">');
|
||||
document.write(user + '@' + site + '</a>');
|
||||
}
|
||||
function mail_name_nospam(user, site, name) {
|
||||
document.write('<a href=\"mailto:' + user + '@' + site + '\">');
|
||||
document.write(name + '</a>');
|
||||
}
|
||||
function addrnospam(user, site) {
|
||||
document.write(user + '@' + site);
|
||||
}
|
||||
// End -->
|
||||
</script>
|
||||
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.home-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
.home-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<h1>CSCI 1200 Data Structures Fall 2023</h2>
|
||||
|
||||
|
||||
<h2>Instructors</h2>
|
||||
<b>DS Instructor Mailing List *:</b> <script language="JavaScript">mailnospam("ds_instructors","cs.rpi.edu")</script><br>
|
||||
<br>
|
||||
<!--<p class=DS_P>
|
||||
<h3>Professor Jasmine Plum</h3>
|
||||
<b>Office:</b> Amos Eaton 205<br>
|
||||
<b>Hours:</b> Mondays 1-3pm, <br>
|
||||
|
||||
|
||||
immediately after lecture on Tuesdays & Fridays,<br>
|
||||
|
||||
|
||||
and by appointment (send email with your complete schedule for the week, appointments are not for help with assignments)
|
||||
|
||||
<br>
|
||||
<b>Webpage:</b> <a href="http://www.cs.rpi.edu/~holzbh/">http://www.cs.rpi.edu/~holzbh/</a>
|
||||
</p>
|
||||
|
||||
<br>-->
|
||||
|
||||
<p class=DS_P>
|
||||
<h3>Dr. Jidong Xiao</h3>
|
||||
<b>Office:</b> Amos Eaton 206<br>
|
||||
<!--<b>Phone:</b> (518) 276-3274<br>-->
|
||||
<b>Hours:</b> Monday 2-3:50pm, <br>
|
||||
|
||||
|
||||
immediately after lecture on Tuesdays & Fridays,<br>
|
||||
|
||||
|
||||
and by appointment (send email with your complete schedule for the week, appointments are not for help with assignments)
|
||||
|
||||
<br>
|
||||
<b>Webpage:</b> <a href="http://www.cs.rpi.edu/~xiaoj8/">http://www.cs.rpi.edu/~xiaoj8/</a><br>
|
||||
<!--<b>Webex:</b> <a href="https://rensselaer.webex.com/rensselaer/j.php?MTID=m45a5f4b016485d047391cc74b4623d0d">https://rensselaer.webex.com/rensselaer/j.php?MTID=m45a5f4b016485d047391cc74b4623d0d</a><br>Webex meeting password: YZmaKAJp323
|
||||
(Next meeting: 03/26/2023, Sunday 3pm-4pm; HW8 walkthrough)
|
||||
</p>-->
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<h2>Instructional Support Coordinator: Shianne Hulbert</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
<b>DS Instructor Mailing List *:</b> <script language="JavaScript">mailnospam("ds_instructors","cs.rpi.edu")</script><br>
|
||||
<b>Email *:</b> <script language="JavaScript">mailnospam("hulbes","rpi.edu")</script><br>
|
||||
<!--<b>Office:</b> Amos Eaton (AE) 109<br>
|
||||
<b>Phone:</b> (518) 276-6911<br>-->
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
|
||||
<b>* For personal/confidential matters:</b>
|
||||
Please send all emails regarding
|
||||
DS course policies and administration (e.g, registration, excused
|
||||
absenses, personal accommodations, etc.) to the DS Instructor Mailing
|
||||
List, which is received by both the Instructor and the Instructional
|
||||
Support Coordinator.
|
||||
<br>
|
||||
<br>
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
|
||||
<b>For general course questions:</b>
|
||||
Please use the
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/forum">
|
||||
Discussion Forum.</a> This allows us to most efficiently
|
||||
answer questions that other students may also have. Thank you!
|
||||
<br>
|
||||
<br>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<h2>Graduate Student Teaching Assistants / Course Assistants </h2>
|
||||
|
||||
<!--
|
||||
<p class=DS_P><b>TBA</b></p>
|
||||
-->
|
||||
|
||||
<p class=DS_P>
|
||||
<b>Conor Flynn</b><br>
|
||||
<b>Email:</b> <script language="JavaScript">mailnospam("flynnc3","rpi.edu")</script><br>
|
||||
</p>
|
||||
<br>
|
||||
<p class=DS_P>
|
||||
<b>Yuxuan Zhu</b><br>
|
||||
<b>Email:</b> <script language="JavaScript">mailnospam("zhuy27","rpi.edu")</script><br>
|
||||
</p>
|
||||
<br>
|
||||
<p class=DS_P>
|
||||
<b>Matthew Pisano</b><br>
|
||||
<b>Email:</b> <script language="JavaScript">mailnospam("pisanm2","rpi.edu")</script><br>
|
||||
</p>
|
||||
<br>
|
||||
<p class=DS_P>
|
||||
<b>Shuhang Tan</b><br>
|
||||
<b>Email:</b> <script language="JavaScript">mailnospam("tans5","rpi.edu")</script><br>
|
||||
</p>
|
||||
<br>
|
||||
<p class=DS_P>
|
||||
<b>Ron Rattanakornphan</b><br>
|
||||
<b>Email:</b> <script language="JavaScript">mailnospam("rattar","rpi.edu")</script><br>
|
||||
</p>
|
||||
<br>
|
||||
<p class=DS_P>
|
||||
<b>Kajsa Arnold</b><br>
|
||||
<b>Email:</b> <script language="JavaScript">mailnospam("arnolk","rpi.edu")</script><br>
|
||||
</p>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<p class=DS_P> </p>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
<em>See the <a href="schedule.php">weekly schedule page</a> for office
|
||||
hours and check
|
||||
the <a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/forum">Discussion
|
||||
Forum</a> for any announcements of changes to the office hours schedule.
|
||||
</em>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<p class=DS_P> </p>
|
||||
|
||||
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
|
||||
298
php/installation_test.php
Executable file
298
php/installation_test.php
Executable file
@@ -0,0 +1,298 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.cpp-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.cpp-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="left-sidebox">
|
||||
<h1>Test your C++ Installation</h1>
|
||||
</td>
|
||||
<td class="right-sidebox">
|
||||
<div id="side-nav-buttons" class="my_sidebox">
|
||||
<ul class="sidebox">
|
||||
<li><a href="development_environment.php" class="nav-row">C++ Installation Choices for Your Operating System</a></li>
|
||||
<li><a href="wsl.php" class="nav-row">Using Windows Subsystem for Linux (WSL)</a></li>
|
||||
<li><a href="editors_ides.php" class="nav-row" id=nav-sidebar>Editors, Compilers, and IDEs</a></li>
|
||||
<li><a href="memory_debugging.php" class="nav-row">Memory Debugging</a></li>
|
||||
<li><a href="installation_test.php" class="nav-row cpp-selected sidebox">Test Your Installation</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</table>
|
||||
|
||||
|
||||
<h2>Simple Test of Compilation</h2>
|
||||
|
||||
|
||||
<ol class=DS_OL>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
To check that you're good to go, download this simple program and save
|
||||
it into your data structures course directory:
|
||||
</p>
|
||||
|
||||
<a href="lectures/temperature.cpp">temperature.cpp</a>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Open a terminal and <em>change directory</em> to navigate to your data structures directory:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
cd INSERT_DATA_STRUCTURES_DIRECTORY_NAME
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
</li>
|
||||
<p class=DS_P>
|
||||
Confirm you're in the right location by <em>listing</em> the directory contents typing:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
ls
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<p class=DS_P>
|
||||
You should see the file <tt>temperature.cpp</tt> and maybe some other stuff.
|
||||
</p>
|
||||
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Compile the temperature program by typing:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
g++ -Wall -g temperature.cpp -o temperature.out
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<p class=DS_P>
|
||||
(Alternatively, use <tt>clang++</tt> instead of <tt>g++</tt>.) This
|
||||
should creates an executable named temperature.out. Type <tt>ls</tt>
|
||||
again to confirm the executable appeared!
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Now run that executable:
|
||||
</p>
|
||||
<pre>
|
||||
./temperature.out
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<p class=DS_P>
|
||||
And you should be able to interact with this program at the keyboard.
|
||||
</p>
|
||||
</ol>
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<h2>Simple Test of Terminating an Infinite Loop</h2>
|
||||
|
||||
|
||||
<ol class=DS_OL>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Download and save this file to your data structures directory:
|
||||
</p>
|
||||
|
||||
<a href="lectures/infinite_loop.cpp">infinite_loop.cpp</a>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Compile and run this program. It should start printing dots and not
|
||||
stop.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Now let's confirm that your computer is spending alot of CPU resources
|
||||
on this infinite loop. We'll view the list of all programs running on
|
||||
your computer sorted by CPU usage.
|
||||
</p>
|
||||
|
||||
<ul class=DS_UL>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
On Mac or Linux or WSL, in another terminal type:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
top -o %CPU
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<p class=DS_P>You should see the program name at or near the top of the list.
|
||||
And it should be using a large amount of CPU (depending on the number
|
||||
of processors on your machine).
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
On Windows:
|
||||
</p>
|
||||
|
||||
|
||||
<ol class=DS_OL>
|
||||
<li class=DS_LI>Search for and launch "Task Manager"
|
||||
|
||||
<li class=DS_LI>Click "More Details"
|
||||
|
||||
<li class=DS_LI>Click on the "CPU" column
|
||||
</ol>
|
||||
|
||||
<p class=DS_P>You should see the program name at or near the top of the list.
|
||||
And it should be using a large amount of CPU (depending on the number
|
||||
of processors on your machine).
|
||||
</ul>
|
||||
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Confirm that you can terminate the runaway program by pressing Ctrl-c.
|
||||
</p>
|
||||
|
||||
</ol>
|
||||
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<h2>Simple Test of Memory Debugger Installation & Usage</h2>
|
||||
|
||||
<ol class=DS_OL>
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Download and save this short (intentionally buggy) program:
|
||||
</p>
|
||||
|
||||
<a href="lectures/memory_bugs.cpp">memory_bugs.cpp</a>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Follow the instructions for your system to compile and run this program for
|
||||
<a href="memory_debugging.php">Memory Debugging</a>.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Now run the program under the memory debugger and locate the report
|
||||
generated by the memory debugger. (It may be printed directly to the
|
||||
terminal and/or saved to a file.)
|
||||
</p>
|
||||
|
||||
</ol>
|
||||
|
||||
<p class=DS_P>
|
||||
<em>NOTE: The memory debugger report contains lots of data which can
|
||||
be intimidating the first time you see it. This tiny program has 4
|
||||
different errors! We'll discuss the code, and the errors, and how to
|
||||
understand this report a few weeks into the term.</em>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
|
||||
<h2>Simple Test of the Traditional Debugger</h2>
|
||||
|
||||
<ol class=DS_OL>
|
||||
|
||||
<li class=DS_LI><p class=DS_P> Launch the temperature program (or another executable) inside of the <tt>gdb</tt> debugger:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
gdb ./temperature.out
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>At the gdb prompt, start the program:</p>
|
||||
|
||||
<pre>
|
||||
run
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>If the program is still running, press Ctrl-C. To see the
|
||||
stack backtrace of the program (listing the functions you are in the
|
||||
middle of), type:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
bt
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Finally, close gdb:
|
||||
|
||||
<pre>
|
||||
quit
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<p class=DS_P>
|
||||
(You will have to press 'y' if the program is still running.)
|
||||
</p>
|
||||
|
||||
</ol>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
If you're using LLVM's <tt>clang++</tt> instead of <tt>g++</tt>, you'll also use LLVM's
|
||||
<tt>lldb</tt> instead of <tt>gdb</tt>. The above commands are the
|
||||
same (just substitute <tt>lldb</tt> for <tt>gdb</tt>), and many of the
|
||||
other commands are similar:
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
|
||||
<a href="https://lldb.llvm.org/lldb-gdb.html">A handy table of the different gdb/lldb commands</a>
|
||||
</p>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
<em>NOTE: The traditional debugger has many powerful features that you
|
||||
should learn over the term. Follow online tutorials and ask for help
|
||||
in lab and office hours to most effectively debug your programming
|
||||
assignments.</em>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
89
php/lecture_polls.php
Executable file
89
php/lecture_polls.php
Executable file
@@ -0,0 +1,89 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.syllabus-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.syllabus-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="left-sidebox">
|
||||
<h1>Submini Lecture Polls</h1>
|
||||
</td>
|
||||
<td class="right-sidebox">
|
||||
<div id="side-nav-buttons" class="my_sidebox">
|
||||
<ul class="sidebox">
|
||||
<li><a href="syllabus.php" class="nav-row">Syllabus</a></li>
|
||||
<li><a href="grading.php" class="nav-row">Course Grades</a></li>
|
||||
<li><a href="lecture_polls.php" class="nav-row syllabus-selected sidebox">Submini Lecture Polls</a></li>
|
||||
<li><a href="homework_policies.php" class="nav-row">Homework Policies</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</table>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
We will use Submitty to collect answers to simple multiple-choice
|
||||
questions during lecture (Tuesdays & Fridays). These lecture
|
||||
participation polls help increase engagement in lectures and allow the
|
||||
instructor to gauge student understanding & absorption of the
|
||||
material. You are encouraged to discuss the questions with the
|
||||
classmates sitting around you.
|
||||
</p>
|
||||
|
||||
<h2>Participation Incentives</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
Lecture participation polls will not be directly factored into the
|
||||
semester grade. However, as an incentive for participation and correct
|
||||
answers to these exercises, students will be able to earn extra
|
||||
<a href="homework_policies.php">
|
||||
homework late days</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
We will generally have 4-6 lecture participation poll questions per lecture.
|
||||
Participation in a poll question (no correct answer) is worth 1.0
|
||||
points. A correct answer on a non-poll question is worth 1.0 points.
|
||||
An incorrect answer on a non-poll question is worth 0.5 points. No
|
||||
answer on either a poll or non-poll question is 0.0 points.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
After earning your first 15.0 lecture participation points, you will receive
|
||||
an extra homework late day. And for every 30.0 lecture participation points after
|
||||
that you will receive one additional homework late day. Earned late
|
||||
days may not be applied to previous homeworks. You must have earned
|
||||
the late day before the homework deadline in order to use the late day
|
||||
on that assignment. Specifically, if your poll participation during a Friday
|
||||
lecture earn you a late day, you may not use that late day on the
|
||||
assignment that was due the night before.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Academic Dishonesty</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
Responding to lecture poll questions with another
|
||||
individual's account
|
||||
constitutes <a href="academic_integrity.php">academic dishonesty</a>.
|
||||
If we find anyone submitting answers or using the account of another
|
||||
individual we will zero the lecture participation points of all
|
||||
involved students and report the incident to the Dean of Students.
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
583
php/memory_debugging.php
Executable file
583
php/memory_debugging.php
Executable file
@@ -0,0 +1,583 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.cpp-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.cpp-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="left-sidebox">
|
||||
<h1>Memory Debugging</h1>
|
||||
</td>
|
||||
<td class="right-sidebox">
|
||||
<div id="side-nav-buttons" class="my_sidebox">
|
||||
<ul class="sidebox">
|
||||
<li><a href="development_environment.php" class="nav-row">C++ Installation Choices for Your Operating System</a></li>
|
||||
<li><a href="wsl.php" class="nav-row">Using Windows Subsystem for Linux (WSL)</a></li>
|
||||
<li><a href="editors_ides.php" class="nav-row" id=nav-sidebar>Editors, Compilers, and IDEs</a></li>
|
||||
<li><a href="memory_debugging.php" class="nav-row cpp-selected sidebox">Memory Debugging</a></li>
|
||||
<li><a href="installation_test.php" class="nav-row">Test Your Installation</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</table>
|
||||
|
||||
<p class=DS_P>
|
||||
Segmentation faults and other memory bugs (reading uninitialized
|
||||
memory, reading/writing beyond the bounds of an array, memory leaks,
|
||||
etc.) can be hard to track down with a traditional debugger. Memory
|
||||
errors can be elusive, and may not cause the program to crash
|
||||
immediately. A program with memory errors may even appear to work
|
||||
correctly on some datasets or on some machines.
|
||||
</p>
|
||||
|
||||
<p class=DS_P> We recommend using a special debugger to find memory errors, for
|
||||
example <a href="http://drmemory.org/">Dr. Memory</a> or
|
||||
<a href="http://valgrind.org">Valgrind</a>. Commercial
|
||||
versions of these tools include <a
|
||||
href="https://en.wikipedia.org/wiki/PurifyPlus">Purify</a> and
|
||||
<a
|
||||
href="http://www.parasoft.com/jsp/products/insure.jsp?itemId=63">Insure++</a>.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>We'll discuss the Dr. Memory and Valgrind memory debugging tools
|
||||
and the memory error reports these tools produce at the end of Lecture
|
||||
7 and during Lab 5. You'll be expected to use one of these tools for
|
||||
debugging starting with Homework 3. The homework submission server
|
||||
and the TAs will use these tools for grading your homework.
|
||||
|
||||
<p class=DS_P><em>
|
||||
Note that running a program under Dr. Memory or Valgrind will slow the
|
||||
execution time significantly. The final step to check for memory
|
||||
leaks is especially costly. We recommend starting with the the
|
||||
smallest tests/input file, even if those appear to be working ok.
|
||||
Fix any memory errors or leaks that are found, then work your way
|
||||
to largest test cases, and be patient.
|
||||
</em>
|
||||
</p>
|
||||
|
||||
|
||||
<!---------------------------------------------------------------------------->
|
||||
<!---------------------------------------------------------------------------->
|
||||
|
||||
<h2>Dr. Memory</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
<a href="http://drmemory.org/">Dr. Memory</a> is available for
|
||||
GNU/Linux, Microsoft Windows, and MacOS operating systems. For
|
||||
questions, bug reports, and discussion, use the Dr. Memory Users
|
||||
group:
|
||||
<a href="http://groups.google.com/group/drmemory-users">
|
||||
http://groups.google.com/group/drmemory-users</a>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
Please report issues with Dr. Memory to the
|
||||
<a href="http://groups.google.com/group/drmemory-users/">
|
||||
Dr. Memory Users Group</a> by email:
|
||||
<tt>drmemory-users@googlegroups.com</tt>. Be sure to include details
|
||||
about your operating system and the Dr. Memory version number. Don't
|
||||
send your full homework submission (it is a public mailing list).
|
||||
</p>
|
||||
|
||||
|
||||
<h3>Dr. Memory on GNU/Linux or Windows Subsystem for Linux (WSL)</h3>
|
||||
|
||||
|
||||
<ol class=DS_OL>
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Obtain the most recent Dr. Memory <tt>tar.gz</tt> file for your operating system from:<br>
|
||||
<a href="https://github.com/DynamoRIO/drmemory/releases/">https://github.com/DynamoRIO/drmemory/releases/</a>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In the example below, we assume
|
||||
<a href="https://github.com/DynamoRIO/drmemory/releases/download/release_2.4.0/DrMemory-Linux-2.4.0-2.tar.gz">
|
||||
DrMemory-Linux-2.4.0-2.tar.gz
|
||||
</a> is the most recent release.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Type these commands into your terminal:<br>
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
cd
|
||||
|
||||
wget https://github.com/DynamoRIO/drmemory/releases/download/release_2.4.0/DrMemory-Linux-2.4.0-2.tar.gz
|
||||
|
||||
tar -xvzf DrMemory-Linux-2.4.0-2.tar.gz
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Build your application with debug information by using the <tt>-g</tt> option. For example:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
g++ -g main.cpp foo_main.cpp foo_other.cpp -o foo.out
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Run your program under Dr. Memory, replacing <tt>foo.out arg1 arg2</tt> with your executable name and any
|
||||
command line arguments:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
~/DrMemory-Linux-2.4.0-2/bin64/drmemory -brief -- foo.out arg1 arg2
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Dr. Memory will report errors to the screen as it runs. It will print
|
||||
a summary at the end of what it found.
|
||||
</p>
|
||||
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
<b>OPTIONAL:</b>
|
||||
Add Dr. Memory to your <tt>PATH</tt> by typing this at the WSL bash prompt:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
echo 'PATH=$PATH:~/DrMemory-Linux-2.4.0-2/bin64' >> ~/.bashrc
|
||||
|
||||
source ~/.bashrc
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<p class=DS_P>
|
||||
<em>NOTE: Do not attempt to edit WSL system files from Windows. The
|
||||
permissions and filesystem will get messed up and you'll need to
|
||||
reinstall everything to recover.</em>
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
After adding Dr. Memory to your PATH, you can simply type:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
drmemory -brief -- foo.out arg1 arg2
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
</ol>
|
||||
|
||||
|
||||
<h3>Dr. Memory on MacOS</h3>
|
||||
|
||||
<p class=DS_ALERT>
|
||||
Note: Dr. Memory has not yet been updated to run on the Mac M1/M2 ARM processors.
|
||||
</p>
|
||||
|
||||
<ol class=DS_OL>
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Obtain the most recent Dr. Memory <tt>tar.gz</tt> file for your operating system from:<br>
|
||||
<a href="https://github.com/DynamoRIO/drmemory/releases/">https://github.com/DynamoRIO/drmemory/releases/</a>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In the example below, we assume
|
||||
<a href="https://github.com/DynamoRIO/drmemory/releases/download/release_2.4.0/DrMemory-MacOS-2.4.0-2.tar.gz">
|
||||
DrMemory-MacOS-2.4.0-2.tar.gz
|
||||
</a> is the most recent release.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Save the package to a directory of your choice. Then untar the package by typing:
|
||||
</p>
|
||||
</li>
|
||||
|
||||
<pre>
|
||||
tar -xvzf DrMemory-MacOS-2.4.0-2.tar.gz
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
|
||||
<li class=DS_LI><p class=DS_P> Be sure to build your application with debug information, the <tt>-g</tt> option,
|
||||
so you get line numbers. For example:
|
||||
</p>
|
||||
</li>
|
||||
|
||||
<pre>
|
||||
g++ -g main.cpp foo_main.cpp foo_other.cpp -o foo.out
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Run your program under Dr. Memory, replacing <tt>foo.out arg1 arg2</tt>
|
||||
with your executable name and any command line arguments:
|
||||
</p>
|
||||
</li>
|
||||
|
||||
<pre>
|
||||
~/DrMemory-MacOS-2.4.0-2/bin64/drmemory -brief -- ./foo.out arg1 arg2
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>Dr. Memory will report errors to the screen as it runs. It will print a
|
||||
summary at the end of what it found.
|
||||
</p>
|
||||
|
||||
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
<b>OPTIONAL:</b> Edit
|
||||
your <tt>~/.zshrc</tt> file to add the location of the DrMemory
|
||||
executable to your <tt>PATH</tt>.</p>
|
||||
|
||||
<p class=DS_P>
|
||||
Open this file, or create an empty
|
||||
file if you have none. Edit your <tt>PATH</tt> variable to insert full path for the
|
||||
DrMemory <tt>bin64</tt> directory. The <tt>PATH</tt> is the sequence
|
||||
of directories (separated by ':') that are checked when you run a program.
|
||||
For example:</p>
|
||||
|
||||
<pre>
|
||||
export PATH=$HOME/bin:/usr/local/bin:/Users/INSERT-YOUR-USERNAME/DrMemory-MacOS-2.4.0-2/bin64/
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<p class=DS_P>
|
||||
Make sure to replace INSERT-YOUR-USERNAME and
|
||||
DrMemory-YourOperatingSystem-VersionXX. Close and re-open your
|
||||
terminal. Then you can simply type:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
drmemory -brief -- foo.out arg1 arg2
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
|
||||
|
||||
</ol>
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Installing Dr. Memory on Windows (not Windows Subsystem for Linux (WSL))</h3>
|
||||
|
||||
<ol class=DS_OL>
|
||||
<li class=DS_LI> <p class=DS_P> Obtain Dr. Memory. To easily place it on the system path,
|
||||
use the installer (the <tt>.msi</tt> file). Alternatively, you can
|
||||
instead obtain the .zip file for a local install.<br>
|
||||
<a href="https://github.com/DynamoRIO/drmemory/wiki/Downloads">
|
||||
https://github.com/DynamoRIO/drmemory/wiki/Downloads
|
||||
</a>
|
||||
</p>
|
||||
|
||||
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Double click on the <tt>.msi</tt> file to run the installer.
|
||||
Click Next.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
Check the box to accept the license and click Next.
|
||||
</p>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
The default location for Dr. Memory installation is fine
|
||||
(it's probably <tt>C:\Program Files (x86)\Dr. Memory\</tt> for 64-bit Windows).
|
||||
Click Next.
|
||||
</p>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
Then click Install. You'll be asked to confirm that you want to make
|
||||
administrative changes to the machine.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
After a quick installation, press Finish.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI> <p class=DS_P>
|
||||
Follow the instructions below to compile & run your program
|
||||
using the Visual Studio IDE or the Visual Studio Command
|
||||
Prompt.
|
||||
</p>
|
||||
|
||||
</ol>
|
||||
|
||||
<h3>Dr. Memory and Visual Studio</h3>
|
||||
|
||||
<p class=DS_P>
|
||||
You can use Dr. Memory with the Microsoft Visual Studio compiler:
|
||||
</p>
|
||||
|
||||
<ol class=DS_OL>
|
||||
|
||||
|
||||
<li class=DS_LI><p class=DS_P> Build your application as 32-bit with Visual Studio (32-bit is
|
||||
the default). Be sure to include debug information. You can verify
|
||||
that you are including debug information by looking at the properties
|
||||
of your build target:
|
||||
</p>
|
||||
|
||||
<p class=DS_P>Press Alt-F7 to bring up the configuration properties.
|
||||
Under "Configuration Properties | C/C++ | General", the "Debug
|
||||
Information Format" entry should either say "Program Database (/Zi)"
|
||||
or "Program Database for Edit and Continue (/ZI)". Additionally, under
|
||||
"Configuration Properties | Linker | Debugging", the "Generate Debug
|
||||
Info" entry should say "Yes (/DEBUG)".
|
||||
For Visual Studio 2015, under "Configuration Properties | Linker |
|
||||
Debugging", the "Generate Debug Info" entry should say "Optimize
|
||||
for debugging (/DEBUG)" -- it should <em>not</em> say "Optimize
|
||||
for faster linking (/DEBUG:FASTLINK)".
|
||||
</p>
|
||||
|
||||
<li class=DS_LI> <p class=DS_P>Disable Runtime Checks: The Visual Studio compiler's
|
||||
<tt>/RTC1</tt> flag can prevent Dr. Memory from reporting
|
||||
uninitialized reads of local variables, and the <tt>/RTC1</tt> checks
|
||||
for uninitialized reads themselves may not catch everything that
|
||||
Dr. Memory finds. However, <tt>/RTC1</tt> does perform additional
|
||||
stack checks that Dr. Memory does not, so for best results, your
|
||||
application should be run under Dr. Memory without <tt>/RTC1</tt>, and
|
||||
run natively (for development & testing without Dr. Memory) with
|
||||
<tt>/RTC1</tt>. </p>
|
||||
|
||||
<p class=DS_P> In the Visual Studio IDE, press Alt-F7 and then under
|
||||
"Configuration Properties | C/C++ | Code Generation" ensure "Basic
|
||||
Runtime Checks" says "Default".
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P> The most recent Dr. Memory installer (for version 1.8 and later)
|
||||
configures Dr. Memory as a Visual Studio "External Tool", which adds a
|
||||
new menu item allowing you to run Dr. Memory within the IDE.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
Now you can select the "Tools | Dr. Memory" menu item and Visual
|
||||
Studio will run your application under Dr. Memory. You can add
|
||||
arguments to your application in the box that pops up immediately
|
||||
after selecting the men item by adding them at the end, after "$(TargetPath)".
|
||||
</p>
|
||||
|
||||
<li class=DS_LI> <p class=DS_P> The output of Dr. Memory (along with your program) will be
|
||||
printed to the Visual Studio Output Window. Dr. Memory will report
|
||||
errors to the screen as it runs. It will print a summary at the end
|
||||
of what it found. You can double-click on a source file on any
|
||||
error's callstack frame in order to automatically open up that file to the
|
||||
line number indicated. </p>
|
||||
|
||||
</ol>
|
||||
|
||||
|
||||
<h3>Using the Visual Studio compiler without the Visual Studio Integrated
|
||||
Development Environment (IDE)</h3>
|
||||
|
||||
|
||||
<ol class=DS_OL>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Launch the Visual Studio Command Prompt. From the Start menu,
|
||||
under All Programs, find your Visual Studio version (e.g., 2010) and
|
||||
expand it. Then expand Visual Studio Tools. Select the "Visual
|
||||
Studio 2010 Command Prompt". (You don't want the x64 or Cross Tools
|
||||
versions.)
|
||||
<em>Note: this is not the Cygwin shell.</em>
|
||||
</p>
|
||||
|
||||
<p class=DS_P> This Command Prompt is a cmd shell in which a batch file that
|
||||
comes with Visual Studio has been executed. This batch file is called
|
||||
<tt>vcvars.bat</tt> and it sets up the path and environment variables
|
||||
needed to run the compiler from the command line.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
Note: You can extract the environment variables from the batch file and set them
|
||||
up in your <tt>.bashrc</tt> so you can build from a shell.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI> <p class=DS_P> At the command line, change to the directory containing your
|
||||
source files.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
Run the compiler, which is called "cl". This will build
|
||||
<tt>hw.exe</tt> from all .cpp files in the current directory:
|
||||
</p>
|
||||
</li>
|
||||
|
||||
<pre>
|
||||
cl /Zi /MT /EHsc /Oy- /Ob0 /Fehw.exe *.cpp
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
If you installed Dr. Memory before you opened the Command Prompt, you
|
||||
can run drmemory from the same prompt.
|
||||
Run this command, replacing <tt>foo.exe arg1 arg2</tt>
|
||||
with your executable name and any command line arguments:
|
||||
</p>
|
||||
</li>
|
||||
|
||||
<pre>
|
||||
drmemory -brief -batch -- foo.exe arg1 arg2
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<p class=DS_P>
|
||||
If you don't see any extra output from Dr. Memory as your program
|
||||
runs, remove the <tt>-batch</tt> flag and the Dr. Memory output will be sent to
|
||||
a file and notepad will launch automatically to display this file.
|
||||
</p>
|
||||
</li>
|
||||
|
||||
<pre>
|
||||
drmemory -brief -- foo.exe arg1 arg2
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<li class=DS_LI> <p class=DS_P>
|
||||
Dr. Memory will print a summary at the end of what errors it found.
|
||||
</p>
|
||||
|
||||
</ol>
|
||||
|
||||
|
||||
<!---------------------------------------------------------------------------->
|
||||
<!---------------------------------------------------------------------------->
|
||||
|
||||
<h2>Valgrind</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
<a href="http://valgrind.org">Valgrind</a> only works on Unix-based
|
||||
systems (e.g., GNU/Linux, FreeBSD, and WSL).
|
||||
|
||||
<p class=DS_P>
|
||||
Unfortunately, <em>Valgrind does not work on more recent versions
|
||||
of MacOS</em> (it only runs on MacOS 10.12 or earlier).</em>
|
||||
|
||||
<p class=DS_P>
|
||||
<em>Valgrind does not work on Cygwin</em> because Cygwin
|
||||
emulates UNIX at the library layer, but Valgrind operates at the
|
||||
system call layer and the Windows system calls are significantly
|
||||
different than UNIX system calls.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
To use Valgrind...
|
||||
</p>
|
||||
|
||||
|
||||
<ol class=DS_OL>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Valgrind is installed by default on most Linux distributions.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI><p class=DS_P> Your program should be compiled with debug information enabled
|
||||
by specifying the <tt>-g</tt> flag. For example:
|
||||
</p>
|
||||
</li>
|
||||
|
||||
<pre>
|
||||
g++ -g main.cpp foo_main.cpp foo_other.cpp -o foo.out
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<li class=DS_LI><p class=DS_P> Then run the program by adding Valgrind to the beginning of
|
||||
your command line (replace <tt>foo.out arg1 arg2</tt> with your
|
||||
program name and any command line arguments for your program):
|
||||
</p>
|
||||
</li>
|
||||
|
||||
<pre>
|
||||
valgrind --leak-check=full --show-reachable=yes ./foo.out arg1 arg2
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<p class=DS_P>
|
||||
If that example run of your program contains any memory errors
|
||||
Valgrind will output information to help you track down the error.
|
||||
Note that using Valgrind can significantly slow down execution time as
|
||||
it inspects every memory action. You may need to craft a smaller test
|
||||
case that exhibits the same bug you would like to solve.
|
||||
</p>
|
||||
|
||||
</ol>
|
||||
|
||||
<p class=DS_P>
|
||||
<em>Note:</em> Because some STL classes (including string) use their
|
||||
own allocators (and do other optimization tricks), there may be a
|
||||
warning about memory that is ``still reachable'' even though you've
|
||||
deleted all your dynamically allocated memory. The newer versions of
|
||||
Valgrind automatically suppresses some of these common false positive
|
||||
errors, so you may see this listed as a ``suppressed leak''.
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<h3>Suppression of False Positives in Valgrind</h3>
|
||||
|
||||
<p class=DS_P>
|
||||
If you see false positive error messages in Valgrind, you will
|
||||
probably want to create an error suppression file to allow you to focus on your actual errors.
|
||||
</p>
|
||||
|
||||
<ol class=DS_OL>
|
||||
<li class=DS_LI><p class=DS_P>Add the <tt>--gen-suppressions=all</tt> option to the valgrind command line:</p>
|
||||
</li>
|
||||
|
||||
<pre>
|
||||
valgrind --leak-check=full --gen-suppressions=all ./foo.out arg1 arg2
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
For each false positive (an error not obviously pointing at your
|
||||
code), copy-paste the suppression text (a block of text in curly
|
||||
braces) into a new file containing your custom suppressions, let's
|
||||
call it <tt>my_suppressions.txt</tt>.<p class=DS_P>
|
||||
|
||||
<li class=DS_LI>Use that suppression file every time you run Valgrind:
|
||||
</li>
|
||||
<pre>
|
||||
valgrind --leak-check=full --suppressions=my_suppressions.txt ./foo.out arg1 arg2
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<li class=DS_LI><p class=DS_P> You may need to add to that file in the future, when you use
|
||||
additional library functions that cause different false positive errors.</p>
|
||||
|
||||
</ol>
|
||||
|
||||
<p class=DS_P>
|
||||
Read more about Valgrind suppressions here:<br>
|
||||
<a href="http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress">
|
||||
http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress</a>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
363
php/programming_information.php
Executable file
363
php/programming_information.php
Executable file
@@ -0,0 +1,363 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.programming_information-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.programming_information-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="left-sidebox">
|
||||
<h1>Helpful C++ Programming Information</h1>
|
||||
</td>
|
||||
<td class="right-sidebox">
|
||||
<div id="side-nav-buttons" class="my_sidebox">
|
||||
<ul class="sidebox">
|
||||
<li><a href="programming_information.php" class="nav-row programming_information-selected sidebox">Helpful C++ Programming Information</a></li>
|
||||
<li><a href="good_programming.php" class="nav-row">Good Programming Practices</a></li>
|
||||
<li><a href="advice_TAs.php" class="nav-row">Programming Advice from the TAs</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</table>
|
||||
|
||||
<p class=DS_P>
|
||||
The following C++ programming details will helpful in completing the
|
||||
initial homeworks for the course.
|
||||
</p>
|
||||
|
||||
<h2>Command Line Arguments</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
Most of the programs we write will expect additional information from
|
||||
the user when the program is launched. We will do this by providing
|
||||
this data on the command line:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
./my_program.exe blue 3.14159 my_input_data_file.txt my_output_data_file.txt
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
In order for your program to receive arguments from the command line,
|
||||
you will make use of the optional arguments to the <tt>main</tt>
|
||||
function. Here is the prototype:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
int main(int argc, char* argv[])
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P> The parameter <tt>argc</tt> contains the number of strings on the
|
||||
command line, including the executable name. For the example above,
|
||||
<tt>argc = 5</tt>. The array <tt>argv</tt> stores those C-style
|
||||
strings. You can access the executable name with
|
||||
<tt>argv[0]</tt> and the arguments with <tt>argv[1]</tt>,
|
||||
<tt>argv[2]</tt>, etc. </p>
|
||||
|
||||
<p class=DS_P>
|
||||
<em>Important Note:</em> To compare command line argument strings
|
||||
using the <tt>==</tt> operator, you must cast this data to a
|
||||
STL C++-style string:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
if (std::string(argv[1]) == std::string("blue")) {
|
||||
std::cout << "my favorite color is blue too!" << std::endl;
|
||||
}
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<h2>Command Line Arguments in Visual Studio</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
You can also specify command line arguments when running the program
|
||||
inside of the Visual Studio development environment. Go to "Project"
|
||||
→ "Properties" → "Configuration Properties" → "Debugging" and in
|
||||
"Command arguments" enter:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
blue 3.14159 my_input_data_file.txt my_output_data_file.txt
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
Note, that the default directory for files is the working directory.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Converting a C/C++ String to an Integer or Floating Point Value</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
|
||||
This is done using the <tt>atoi</tt> (char-to-integer) and <tt>atof</tt>
|
||||
(char-to-float) functions. First, be sure to <tt>#include
|
||||
<cstdlib></tt>. Then, to convert a C++-style STL
|
||||
<tt>std::string</tt> variable to an <tt>int</tt>: </p>
|
||||
|
||||
<pre>
|
||||
std::string my_stl_string = "17";
|
||||
int x = atoi(my_stl_string.c_str());
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
Alternatively, if you are compiling with C++11 (or greater) you can use
|
||||
a similar C++ version of this function:
|
||||
</o>
|
||||
|
||||
<pre>
|
||||
std::string my_stl_string = "17";
|
||||
int x = std::stoi(my_stl_string);
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
And to convert C-style <tt>char</tt> array (C-style string) to a <tt>float</tt>:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
char* my_char_string = argv[2];
|
||||
float y = atof(my_char_string);
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
Or similarly, <tt>std::stof</tt>.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Reading From & Writing To Files</h2>
|
||||
|
||||
<p class=DS_P> The STL streams <tt>std::cin</tt> & <tt>std::cout</tt> are used to
|
||||
read data from and write data to the "console". Often, we would
|
||||
rather read data from a file and/or write the output to a file. We
|
||||
can do this using the STL file stream library: </p>
|
||||
|
||||
<pre>
|
||||
#include <fstream>
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
Here's an example fragment of code that attempts to open an input
|
||||
file stream for a file name specified on the command line above:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
std::ifstream in_str(argv[3]);
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
It is good coding practice to verify that the input stream was
|
||||
successfully opened:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
if (!in_str.good()) {
|
||||
std::cerr << "Can't open " << argv[3] << " to read.\n";
|
||||
exit(1);
|
||||
}
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
Likewise here's how to open a stream for output:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
std::ofstream out_str(argv[4]);
|
||||
if (!out_str.good()) {
|
||||
std::cerr << "Can't open " << argv[4] << " to write.\n";
|
||||
exit(1);
|
||||
}
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
Once the streams are created, you can use <tt>in_str</tt> &
|
||||
<tt>out_str</tt> just like you use <tt>std::cin</tt> &
|
||||
<tt>std::cout</tt>.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
In general, for this course, we encourage you to use the stream
|
||||
<tt>operator>></tt> for all input parsing, rather than using
|
||||
<tt>getline</tt>, <tt>eof</tt>, <tt>getc</tt>, etc. We will not deduct
|
||||
points for using the other methods of parsing, but we have designed
|
||||
the assignment input format specifications for easy parsing with <tt>>></tt>.
|
||||
</p>
|
||||
|
||||
<p class=DS_P> Note that the following code has a bug. If the input file ends
|
||||
with one or more extra newlines, the inner loop will "do something"
|
||||
with the last successfully read element twice. It is important to
|
||||
check the return value of each <tt>>></tt> expression to be sure
|
||||
the read was successful.
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
while (!in_str.eof()) {
|
||||
in_str >> my_variable;
|
||||
// do something with my_variable
|
||||
}
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
A simpler and more robust way to write the same code is:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
while (in_str >> my_variable) {
|
||||
// do something with my_variable
|
||||
}
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<h2>File Parsing Example with different data types</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
For example, if your input file contains family last name, number of children, and ages of the children:
|
||||
</p>
|
||||
<pre>
|
||||
Smith 3 4.5 6.0 8.1
|
||||
Jones 1 13.6
|
||||
Lee 2 1.5 4.2
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
Here is code to read all of this data:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
std::string last_name;
|
||||
int num_children;
|
||||
std::vector<float> ages;
|
||||
float tmp;
|
||||
while (in_str >> last_name) {
|
||||
in_str >> num_children;
|
||||
// error checking to make sure num_children is not negative
|
||||
assert (num_children >= 0);
|
||||
// clear out ages data from the last family
|
||||
ages.clear();
|
||||
for (int i = 0; i < num_children; i++) {
|
||||
in_str >> tmp;
|
||||
ages.push_back(tmp);
|
||||
}
|
||||
// Do something interesting with the last_name and ages variables!
|
||||
}
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
Note that we do not use getline or attempt to find a newline
|
||||
character, so we are not relying on the newlines or spaces or tabs
|
||||
being in specific places in the file. We only assume that data is
|
||||
consistent -- the number of children is non-negative and the number of
|
||||
floats matches the specified number of children. We could do more
|
||||
error checking on each >> operation to make sure each read did not
|
||||
fail, but most of the time in this course its ok to assume the input
|
||||
won't be terribly broken. If there is an error in the input, this
|
||||
code will get confused and break or crash. Robustly handling all
|
||||
broken input is beyond the scope of this course.
|
||||
|
||||
|
||||
|
||||
<h2>Comparing Two Text Files</h2>
|
||||
|
||||
<p class=DS_P> To check the correctness of your program, you can compare your
|
||||
output text file to the provided sample output text file using the
|
||||
UNIX utility <tt>diff</tt> (available on Linux & WSL & MacOSX):
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
diff my_output.txt sample_output.txt
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P> Any lines in the two files that are not identical (including
|
||||
whitespace), will be printed to the console. WinDiff is another
|
||||
option for Windows users. Please see a TA or the instructor in office
|
||||
hours if you have a question about these programs.
|
||||
</p>
|
||||
|
||||
<h2>Redirecting Input & Output</h2>
|
||||
|
||||
<p class=DS_P> What if you have an interactive program that uses
|
||||
<tt>std::cin</tt> & <tt>std::cout</tt> to read from and write to the
|
||||
"console", but you'd like to take the input from a file and you'd
|
||||
rather not rewrite the program to use the input & output streams
|
||||
described above? This following trick is handy for repeated testing
|
||||
and debugging an interactive program (you'd rather not have to
|
||||
manually type in the same input test data many times). Asking the
|
||||
executable to read from a file instead of the console and/or write to
|
||||
a file instead of the console is called I/O redirection. </p>
|
||||
|
||||
<ul class=DS_UL>
|
||||
|
||||
<li class=DS_LI> <p class=DS_P>
|
||||
First, create the <tt>input.txt</tt> file that contains input
|
||||
which you would otherwise type at the console during program's execution.
|
||||
</p>
|
||||
</li>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
Then on the Linux/WSL/MacOSX command prompt simply type:
|
||||
</p>
|
||||
</li>
|
||||
|
||||
<pre>
|
||||
program.exe < input.txt > output.txt
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
|
||||
<li class=DS_LI> <p class=DS_P>
|
||||
When the program has finished, look in the newly created file
|
||||
<tt>output.txt</tt>.
|
||||
</p>
|
||||
</li>
|
||||
|
||||
<li class=DS_LI> <p class=DS_P>
|
||||
NOTE: If your program is printing to both <tt>std::cout</tt> and <tt>std::cerr</tt> run your program like this to separately capture these streams:
|
||||
</p>
|
||||
</li>
|
||||
|
||||
<pre>
|
||||
program.exe < input.txt > output.txt 2> cerr_output.txt
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
<em>This is how we run all automated testing of student programs on Submitty!</em>
|
||||
</p>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
You can do the same thing in Visual Studio. (See section on "Command Line
|
||||
Arguments in Visual Studio" above).
|
||||
</p>
|
||||
|
||||
</ol>
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
139
php/references.php
Executable file
139
php/references.php
Executable file
@@ -0,0 +1,139 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.getting-help-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.getting-help-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="left-sidebox">
|
||||
<h1>References</h1>
|
||||
</td>
|
||||
<td class="right-sidebox">
|
||||
<div id="side-nav-buttons" class="my_sidebox">
|
||||
<ul class="sidebox">
|
||||
<li><a href="getting_help.php" class="nav-row">Getting Help: Online Discussion, Office Hours, & Tutoring</a></li>
|
||||
<li><a href="references.php" class="nav-row getting-help-selected sidebox">References: Textbooks & Web Resources</a></li>
|
||||
<li><a href="advice_S14.php" class="nav-row">Advice from Spring 2014 Data Structures Students</a></li>
|
||||
<li><a href="advice_F11.php" class="nav-row">Advice from Fall 2011 Data Structures Students</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</table>
|
||||
|
||||
<p class=DS_P>
|
||||
The lecture notes posted on this website will be a complete but terse
|
||||
presentation of the material covered in the course. You are
|
||||
encouraged to make use of additional reference material to explain any
|
||||
material you find confusing in more depth.
|
||||
</p>
|
||||
|
||||
<h2>Textbooks</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
The following books are optional (recommended but not
|
||||
required). The course will follow primarily the order of Ford
|
||||
and Topp. Some of the lectures are based on material in Koenig and
|
||||
Moo. Students are encouraged to have available a C++ reference book,
|
||||
such as those by Malik or Stroustrup, and/or use on-line reference
|
||||
material.
|
||||
</p>
|
||||
|
||||
<ul class=DS_UL>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
<a href="https://www.pearson.com/us/higher-education/program/Ford-Data-Structures-with-C-Using-STL-2nd-Edition/PGM77379.html">
|
||||
Data Structures with C++ Using STL, 2nd edition</a><br>
|
||||
Ford and Topp, Prentice Hall
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
<a href="https://www.pearson.com/us/higher-education/program/Koenig-Accelerated-C-Practical-Programming-by-Example/PGM85504.html">
|
||||
Accelerated C++</a><br>
|
||||
Koenig and Moo, Addison-Wesley
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
<a href="https://www.amazon.com/Programming-Problem-Analysis-Program-Design-dp-1337102083/dp/1337102083/ref=dp_ob_title_bk">
|
||||
C++ Programming</a><br>
|
||||
D.S. Malik, Thomson Learning
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
<a href="http://www.stroustrup.com/4th.html">
|
||||
The C++ Programming Language, 4th edition</a><br>
|
||||
Bjarne Stroustrup, Addison-Wesley
|
||||
</p>
|
||||
</ul>
|
||||
|
||||
<h2>Web Resources</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
Here are several websites you should find helpful. Feel free to
|
||||
search for and share other web resources.
|
||||
</p>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
<a href="http://www.cplusplus.com/">http://www.cplusplus.com/</a><br>
|
||||
</p>
|
||||
|
||||
<!--
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
<A HREF="http://www.parashift.com/c++-faq/">http://www.parashift.com/c++-faq/</A>
|
||||
|
||||
<br>
|
||||
This is an organized summary of the most important FAQ's that have
|
||||
appeared on the C++ newsgroups. Both beginning and advanced students
|
||||
can benefit from it.
|
||||
</p>
|
||||
-->
|
||||
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
<a href="http://www.fredosaurus.com/notes-cpp/index.html">http://www.fredosaurus.com/notes-cpp/index.html</a>
|
||||
</p>
|
||||
|
||||
|
||||
<!--
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
<a href="http://mindview.net/Books/TICPP/ThinkingInCPP2e.html">
|
||||
Thinking in C++, by Bruce Eckel</a>
|
||||
</p>
|
||||
-->
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<p class=DS_P> </p>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
<b>
|
||||
See the <a href="programming_information.php">Helpful C++ Programming Notes</a>
|
||||
page for information on C++ command line arguments, file I/O, and
|
||||
redirecting standard input & output to files.
|
||||
</b>
|
||||
</p>
|
||||
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
360
php/schedule.php
Executable file
360
php/schedule.php
Executable file
@@ -0,0 +1,360 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.schedule-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
.schedule-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<?php include 'schedule_format.php'; ?>
|
||||
|
||||
|
||||
|
||||
<h1>Weekly Lab & Office Hours Schedule</h1>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
Please attend your assigned lab section and get to know your lab TA,
|
||||
the undergraduate mentors, and the other students in your lab section.
|
||||
Contact your graduate lab TA in advance to re-schedule if you
|
||||
can't make your lab section for a particular week.
|
||||
|
||||
<em>NOTE: Requests for extensions for homework assignments or makeup exams
|
||||
must be
|
||||
<a href="https://success.studentlife.rpi.edu/current-students/academic-and-personal-support/requesting-excused-absence">verified
|
||||
by the appropriate office</a>, who will send a written note to
|
||||
the course instructor.
|
||||
</em></p>
|
||||
|
||||
<p class=DS_P>
|
||||
Your graduate lab TA is your first point of contact for this course.
|
||||
You may also attend the office hours of any other TA or the instructor
|
||||
for questions about the course material or the homework. If you have
|
||||
questions about the grading of your homework, please see the TA who
|
||||
graded your assignment during their regular office hours or make an
|
||||
appointment. Please also check the <a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/forum">Discussion Forum</a> for announcements of schedule changes.
|
||||
</p>
|
||||
|
||||
<p class=DS_P> When you seek help on a programming assignment from a TA or from
|
||||
the instructor during office hours, you must arrive prepared with a
|
||||
list of problems and questions. Students who are not prepared will be
|
||||
turned away.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
During busy office hours (Wednesday and Thursday office hours tend to
|
||||
be the most crowded) we will be using the
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/office_hours_queue">
|
||||
Submitty Office Hours Help Queue</a>
|
||||
to ensure that
|
||||
everyone has a fair turn getting help.
|
||||
</p>
|
||||
|
||||
<br>
|
||||
|
||||
<p class=DS_P>
|
||||
<b>All times below are the
|
||||
<a href="https://www.google.com/search?q=america+newyork+time+zone">America/New York timezone</a>.</b>
|
||||
</p>
|
||||
|
||||
<br>
|
||||
|
||||
<table width="100%" border=1 cellpadding=0 cellspacing=0>
|
||||
|
||||
<?php
|
||||
|
||||
/* -------------------------------------------------------------------------------------- */
|
||||
/* -------------- DAY HEADINGS ---------------------------------------------------------- */
|
||||
|
||||
row_begin();
|
||||
schedule_day("Monday","12.5%");
|
||||
schedule_day("Tuesday","12.5%");
|
||||
schedule_day("Wednesday","37.5%",3);
|
||||
//schedule_day("Thursday","25%",2);
|
||||
schedule_day("Thursday","25%",2);
|
||||
schedule_day("Friday","12.5%");
|
||||
row_end();
|
||||
|
||||
|
||||
/* -------------- 10 AM ----------------------------------------------------------------- */
|
||||
|
||||
row_begin("10am");
|
||||
//schedule_misc("Autograding Released",2);
|
||||
blank(4);
|
||||
blank(4);
|
||||
|
||||
/*schedule_lab("1","10-11:50am","Lally 104","Maurício","Alec, Eric P.,<br>Nate, & Osama",1,"11%");
|
||||
schedule_lab("2","10-11:50am","J-ROWL 2C30","Weiran","Youssef, Ethan,<br>Frank, & Marisa",1,"11%");
|
||||
schedule_lab("15","10-11:50am","PITTS 4114","Cameron","Paul, George,<br>Victor, & Wendy",1,"11%");
|
||||
blank(4);*/
|
||||
|
||||
schedule_lab("1","10-11:50am","Lally 102","Conor","Anthony, Daniel & Ryon",1,"11%"); //35
|
||||
schedule_lab("2","10-11:50am","Lally 104","Ron"," Sharat, Chaitanya & Xenia",1,"11%"); //35
|
||||
//schedule_lab("15","10-11:50am","Sage 4101","Connor","Evan, Niels & Ryon",1,"11%"); //35
|
||||
blank(4);
|
||||
//schedule_alac("1/23","Wed 10:00-11:50am","ALAC tutoring space, 1st floor Library");
|
||||
|
||||
blank(4);
|
||||
blank(4);
|
||||
blank(4);
|
||||
row_end();
|
||||
|
||||
row_begin();
|
||||
row_end();
|
||||
|
||||
/* -------------- 11 AM ----------------------------------------------------------------- */
|
||||
|
||||
row_begin("11am");
|
||||
|
||||
//schedule_misc("Homework Released",2);
|
||||
row_end();
|
||||
|
||||
row_begin();
|
||||
row_end();
|
||||
|
||||
/* -------------- NOON ----------------------------------------------------------------- */
|
||||
|
||||
row_begin("12pm");
|
||||
|
||||
blank(4);
|
||||
|
||||
/*
|
||||
schedule_lab("3","noon-1:50pm","Lally 102","Cameron","Paul, Tyler,<br>George, & Abby(50%)",1,"11%");
|
||||
schedule_lab("4","noon-1:50pm","Lally 104","Tim","Eric P., Matt,<br>Vikram, & Abby(50%)",1,"11%");
|
||||
schedule_lab("11","noon-1:50pm","JROWL 2C30","Josh","Brian, Yang,<br>Ryan, & Wendy",1,"11%");
|
||||
blank(4);
|
||||
|
||||
// Thursday
|
||||
schedule_ta_officehours("12-2pm<br>TA: Tim<br>mentors: Hayes<br>& Osama<br><br>2-4pm<br>TA: Farhad<br>mentors: Abby,<br>Coen, & Matt<br> <br>4-6pm<br>TA: Milo<br>mentors: Alex,<br>Grace, & Wendy"," <br>Folsom Library<br>ALAC Tutoring Space<br>(SE corner of<br>lower level)",12);
|
||||
*/
|
||||
|
||||
blank(4);
|
||||
//Fu, Anthony,
|
||||
schedule_lab("3","12-1:50pm","Lally 102","Conor","Jessica, Ronin & Ryon",1,"11%"); //35
|
||||
schedule_lab("4","12-1:50pm","Lally 104","Ron","Anthony, Amelia & Kiron",1,"11%"); //35 TBD1
|
||||
//schedule_lab("11","noon-1:50pm","Sage 4101","Connor & Xiaoyu","Amelia, Eleanor & Yash",1,"11%"); //18
|
||||
blank(4);
|
||||
|
||||
// Thursday
|
||||
//schedule_ta_officehours("12-1:50pm<br>mentors: Jack & Kajsa","VCC 208",8);
|
||||
schedule_ta_officehours("12-1:50pm<br>mentors: Jack & Kajsa<br>VCC 208<br> <br>2-3:50pm<br>mentors: Charles, Anna & Nicole<br>JEC 3210<br> <br>4-5:50pm<br>TA: Ron<br>mentors: Jack & Nikul & Samir<br>JEC 4309<br> <br>6-7:50pm<br>TA: Yuxuan<br>mentors: Braeden & Nicole & Kaelan<br>JEC 4309"," <br>",16);
|
||||
|
||||
//Folsom Library<br>ALAC Tutoring Space<br>(SE corner of<br>lower level)
|
||||
|
||||
blank(4);
|
||||
blank(4);
|
||||
|
||||
row_end();
|
||||
|
||||
// 12:30
|
||||
row_begin();
|
||||
row_end();
|
||||
|
||||
/* -------------- 1 PM ----------------------------------------------------------------- */
|
||||
|
||||
row_begin("1pm");
|
||||
//schedule_instructor_officehours("Prof Cutler", "Lally 302","4","1-3pm");
|
||||
row_end();
|
||||
|
||||
row_begin();
|
||||
//schedule_instructor_officehours("Prof Plum", "Eaton 205","4","1-3pm");
|
||||
row_end();
|
||||
|
||||
/* -------------- 2 PM ----------------------------------------------------------------- */
|
||||
|
||||
row_begin("2pm");
|
||||
schedule_instructor_officehours("Jidong", "AE 206","4","2-3:50pm");
|
||||
|
||||
//schedule_lecture("2-3:50pm","DCC 308");
|
||||
//schedule_lecture_split("9-16","2-3:50pm","DCC 308");
|
||||
//schedule_instructor_officehours("Prof Plum*","See footnote",1,"1:45-2:15pm");
|
||||
//schedule_lecture("2-3:50pm","ONLINE");
|
||||
schedule_lecture("2-3:50pm","West Hall Auditorium");
|
||||
|
||||
/*schedule_lab("5","2-3:50pm","Lally 102","Milo","Alex, Anshul,<br>Tyler, & Sinclair(50%)",1,"11%");
|
||||
schedule_lab("6","2-3:50pm","Lally 104","Tim","Julian, Terry,<br>Victor, & Sinclair(50%)",1,"11%");
|
||||
schedule_lab("12","2-3:50pm","Eaton 216","Jianhui","Coen, Grace & Andrea",1,"11%");
|
||||
|
||||
schedule_ta_officehours("4-6pm<br>TA: Maurício<br>mentors: Hayes,<br>Sinclair, & Winona<br> <br>6-8pm<br>TA: Milo<br>mentors: Cass,<br>Eric W., & Jakob"," <br>J-ROWL 2C30<br>",8);
|
||||
*/
|
||||
|
||||
//Tyler B., Ryon, Yash, Ali, Maryellen, Theodore, Jody, Jessica
|
||||
schedule_lab("5","2-3:50pm","Lally 102","Shuhang","Alexander, Quinn & Eleanor",1,"11%"); //35
|
||||
schedule_lab("6","2-3:50pm","Lally 104","Yuxuan","Ronin, Shimu & Nikul",1,"11%"); //35
|
||||
//schedule_lab("12","2-3:50pm","Sage 4101","Abby & Nia","David, Samir, & Xenia",1,"11%"); //34
|
||||
|
||||
blank(4);
|
||||
blank(4);
|
||||
|
||||
//schedule_lecture_split("9-16","2-3:50pm","DCC 308");
|
||||
//schedule_lecture_split_andrew("9-16","2-3:50pm","DCC 308","Andrew A.","2-2:50pm","DCC 235");
|
||||
//schedule_instructor_officehours("Prof Plum*","See footnote",1,"1:45-2:15pm");
|
||||
//schedule_lecture("2-3:50pm","ONLINE");
|
||||
schedule_lecture("2-3:50pm","West Hall Auditorium");
|
||||
row_end();
|
||||
|
||||
row_begin();
|
||||
//blank(1);
|
||||
//blank(1);
|
||||
row_end();
|
||||
|
||||
/* -------------- 3 PM ----------------------------------------------------------------- */
|
||||
|
||||
row_begin("3pm");
|
||||
//blank(2);
|
||||
//schedule_instructor_officehours("Prof Xiao", "Eaton 206","4","3-5pm");
|
||||
//schedule_early_officehours("9-16","2-3:50pm","DCC 308","Andrew A.","2-2:50pm","DCC 235");
|
||||
//blank(2);
|
||||
//blank(2);
|
||||
row_end();
|
||||
|
||||
row_begin();
|
||||
//blank(1);
|
||||
row_end();
|
||||
|
||||
/* -------------- 4 PM ----------------------------------------------------------------- */
|
||||
|
||||
row_begin("4pm");
|
||||
|
||||
//monday 4-6
|
||||
//blank(4);
|
||||
|
||||
//schedule_instructor_officehours("Prof Cutler","DCC 308/Lobby");
|
||||
blank(4);
|
||||
|
||||
/*
|
||||
schedule_lab("7","4-5:50pm","Lally 102","Milo","Jakob,<br>Nick, Zixiang,<br>& Eric W.(50%)",1,"11%");
|
||||
schedule_lab("8","4-5:50pm","Lally 104","Farhad","Coen,<br>Julian, Vikram,<br>& Eric W.(50%)",1,"11%");
|
||||
schedule_lab("13","4-5:50pm","Sage 3101","Jianhui","Coen, Ruijie,<br>Grace & Jared",1,"11%");
|
||||
|
||||
schedule_ta_officehours("TA: Cameron<br>mentors:<br>Alec & Rutvik","J-ROWL 2C30",4,"4-6pm");*/
|
||||
|
||||
blank(4);
|
||||
//Aditya, Ryon, Yash, Joyce, Nia, Jack, Jessica
|
||||
schedule_lab("7","4-5:50pm","Lally 102","Shuhang","Kaelan, Quinn & Xenia",1,"11%"); //35
|
||||
schedule_lab("8","4-5:50pm","Lally 104","Matthew","Daniel, Kiron & Charles",1,"11%"); //35
|
||||
//schedule_lab("13","4-5:50pm","Sage 4101","Mike","Aaryaman, Aleksander & Charles",1,"11%"); //34
|
||||
|
||||
//schedule_ta_officehours("4-5:50pm<br>TA: Abby & Bishwajit<br>mentors: Jaeseok, Sophia & Terry<br> <br>6-7:50pm<br>TA: Kacy<br>mentors: Kaelan & Nyx","<br>Folsom Library<br>ALAC Tutoring Space<br>(SE corner of<br>lower level)",8);
|
||||
schedule_ta_officehours("4-5:50pm<br>mentors: Smayan & Kajsa & Samir <br>AE 216<br> <br>6-7:50pm<br>TA: Shuhang & Conor <br>mentors: Braeden","AE 216",8);
|
||||
|
||||
blank(4);
|
||||
schedule_ta_officehours("4-5:50pm<br>mentors:<br>Shimu & Amelia","Sage 4510",4);
|
||||
|
||||
row_end();
|
||||
|
||||
row_begin();
|
||||
row_end();
|
||||
|
||||
/* -------------- 5 PM ----------------------------------------------------------------- */
|
||||
|
||||
row_begin("5pm");
|
||||
row_end();
|
||||
|
||||
row_begin();
|
||||
row_end();
|
||||
|
||||
|
||||
/* -------------- 6 PM ----------------------------------------------------------------- */
|
||||
|
||||
row_begin("6pm");
|
||||
|
||||
//schedule_alac_officehours("ALAC Review Session<br><em>Start date: TBD</em>","6-8pm","Sage 3101",4);
|
||||
|
||||
/*
|
||||
schedule_ta_officehours("TA: Tim<br>mentors:<br>Andrew & Nate","J-ROWL 2C30",4,"6-8pm");
|
||||
schedule_ta_officehours("TA: Cameron<br>mentors:<br>Grace & Rutvik","J-ROWL 2C30",4,"6-8pm");
|
||||
|
||||
schedule_lab("9","6-7:50pm", "Lally 102","Maurício","Nick,<br>Terry, & Zixiang",1,"11%");
|
||||
schedule_lab("14","6-7:50pm", "Lally 104","Farhad","Anshul,<br>Ryan, & Andrew",1,"11%");
|
||||
schedule_lab("10","6-7:50pm","Sage 3101","Ayushi","Greg, Wilson G. & Ritz",1,"11%");
|
||||
schedule_lab("16","6-7:50pm", "Eaton 216","Maurício","Nick,<br>Terry, & Zixiang",1,"11%");
|
||||
|
||||
schedule_ta_officehours("TAs: Farhad & Maurício<br>mentors: Cass,<br>Ryan, & Winona",
|
||||
" <br>6-8pm<br>J-ROWL 2C30",4);
|
||||
*/
|
||||
|
||||
schedule_ta_officehours("TA: Matthew<br>mentors:<br>Anna & Alexander","AE 215",4,"6-7:50pm");
|
||||
schedule_ta_officehours("TA: Yuxuan<br>mentors:<br>Eleanor & Smayan","AE 216",4,"6-7:50pm");
|
||||
|
||||
//Justin, Joyce, Nia, Spencer
|
||||
schedule_lab("9","6-7:50pm", "Lally 102", "Matthew","Jessica, Chaitanya & Sharat",1,"11%");
|
||||
//schedule_lab("10 & 14 & 16","6-7:50pm", "Lally 104","TBD","TBD",2,"11%"); //22+7+10 = 39
|
||||
//schedule_lab("10","6-7:50pm", "Lally 104","James","David, Jody & Veevek",1,"11%");
|
||||
//schedule_lab("14 & 16","6-7:50pm","14: Sage 5101<br>16: Sage 4101","14: Mike<br>16:Yizhou","14:Justin, Rohan & Sophia<br>16:Aaryaman, Henry & Xenia",1,"11%");
|
||||
//schedule_lab("16","6-7:50pm", "Eaton 216","TBD","TBD",1,"11%");
|
||||
//schedule_ta_officehours("6-7:50pm<br>TA: Shuhang<br>mentors: Braeden & Samir","AE 216",8);
|
||||
|
||||
blank(4);
|
||||
schedule_testblock("Location: TBA<br>","6-7:50pm<br><em>exam weeks only</em>","12%");
|
||||
//blank(4);
|
||||
|
||||
//schedule_ta_officehours("TA: TBD<br>mentors: TBD<br>","Folsom Library<br>Lower Level<br>ALAC Tutoring",4,"6-7:50pm",1,"12%");
|
||||
blank(4);
|
||||
|
||||
row_end();
|
||||
|
||||
row_begin();
|
||||
row_end();
|
||||
|
||||
|
||||
/* -------------- 7 PM ----------------------------------------------------------------- */
|
||||
|
||||
row_begin("7pm");
|
||||
row_end();
|
||||
|
||||
row_begin();
|
||||
row_end();
|
||||
|
||||
/* -------------- 8 PM ----------------------------------------------------------------- */
|
||||
|
||||
//row_begin("8pm");
|
||||
/*schedule_alac("start date","8-10pm","location");*/
|
||||
|
||||
//schedule_alac("1/19","8pm-10pm","Lally 102 (ALAC), AE 118 (CS Mentoring)");
|
||||
//blank(4);
|
||||
|
||||
//schedule_alac("1/19","8pm-10pm","Lally 102 (ALAC), Lally 104 (CS Mentoring)");
|
||||
//blank(4);
|
||||
|
||||
//schedule_alac("1/20","8pm-10pm","ONLINE (Office Hours Queue)", 4);
|
||||
//schedule_ta_officehours("mentors: TBD<br>","Lally 104",4,"8-9:50pm",1,"20%");
|
||||
//schedule_alac("1/19","8pm-10pm","Lally 102 (ALAC), AE118 (CS Mentoring)",4);
|
||||
//blank(4,4);
|
||||
|
||||
//schedule_alac("1/20","8pm-10pm","ONLINE (Office Hours Queue)", 2);
|
||||
//schedule_ta_officehours("mentors: TBD<br>","Amos Eaton 118",4,"8-9:50pm",1,"12%");
|
||||
//schedule_alac("1/19","8pm-10pm","Lally 102 (ALAC), AE118 (CS Mentoring)",2 );
|
||||
//blank(4,2);
|
||||
|
||||
//blank(4);
|
||||
//row_end();
|
||||
|
||||
//row_begin();
|
||||
//row_end();
|
||||
|
||||
/* -------------- 9 PM ----------------------------------------------------------------- */
|
||||
|
||||
//row_begin("9pm");
|
||||
//row_end();
|
||||
|
||||
//row_begin();
|
||||
//row_end();
|
||||
|
||||
/* -------------------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
?>
|
||||
|
||||
|
||||
</table>
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
105
php/schedule_format.php
Executable file
105
php/schedule_format.php
Executable file
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
|
||||
|
||||
function makelinkb($directory,$file,$text) {
|
||||
if (isset($text)) {
|
||||
print '<a href='.$directory.$file.'>'.$text.'</a><br>';
|
||||
} else {
|
||||
print '<a href='.$directory.$file.'>'.$file.'</a><br>';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************/
|
||||
/*****************************************************************/
|
||||
/*****************************************************************/
|
||||
function schedule_misc($what,$rowspan=4,$colspan=1){
|
||||
print '<td class=schedule_orange rowspan='.$rowspan.' colspan='.$colspan.'>'.$what.'</td>';
|
||||
}
|
||||
|
||||
|
||||
function schedule_lab($which,$time,$room,$ta,$mentors,$colspan=1,$width="100%") {
|
||||
// print '<td class=schedule_yellow width='.$width.' rowspan=4 colspan='.$colspan.'><b>Lab Section '.$which.'</b><br>'.$time.'<br>'.$room.'<br>TA: '.$ta.'<br>mentors: '.$mentors.'</td>';
|
||||
print '<td class=schedule_yellow rowspan=4 colspan='.$colspan.'><b>Lab Section '.$which.'</b><br>'.$time.'<br>'.$room.'<br>TA: '.$ta.'<br>mentors: '.$mentors.'</td>';
|
||||
}
|
||||
|
||||
function schedule_lecture($time,$room,$rowspan=4) {
|
||||
print '<td class=schedule_green rowspan='.$rowspan.'><b>Lecture</b><br>'.$time.'<br>'.$room.'</td>';
|
||||
}
|
||||
|
||||
function schedule_testblock($time,$room) {
|
||||
print '<td class=schedule_red rowspan=4><b>Test Block</b><br>'.$time.'<br>'.$room.'</td>';
|
||||
}
|
||||
|
||||
function schedule_instructor_officehours($who,$room,$rowspan=1,$time=null) {
|
||||
if (isset($time)) {
|
||||
print '<td class=schedule_bluegreen rowspan='.$rowspan.'>'.$who.'<br>'.$time.'<br>'.$room.'</td>';
|
||||
} else {
|
||||
print '<td class=schedule_bluegreen rowspan='.$rowspan.'>'.$who.'<br>'.$room.'</td>';
|
||||
}
|
||||
}
|
||||
|
||||
function schedule_alac_officehours($alac,$room,$time,$rowspan,$width="100%") {
|
||||
print '<td class=schedule_grey rowspan='.$rowspan.'>'.$alac.'<br>'.$room.'<br>'.$time.'</td>';
|
||||
}
|
||||
|
||||
|
||||
function schedule_ta_officehours($ta,$room,$rowspan,$time=null,$colspan=1,$width="12%") {
|
||||
if (isset($time)) {
|
||||
print '<td class=schedule_blue width='.$width.' rowspan='.$rowspan.' colspan='.$colspan.'>'.$ta.'<br>'.$time.'<br>'.$room.'</td>';
|
||||
} else {
|
||||
print '<td class=schedule_blue width='.$width.' rowspan='.$rowspan.' colspan='.$colspan.'>'.$ta.'<br>'.$room.'</td>';
|
||||
}
|
||||
}
|
||||
|
||||
function schedule_hybrid_ta_officehours($ta,$room,$rowspan,$time=null,$colspan=1,$width="12%") {
|
||||
if (isset($time)) {
|
||||
print '<td class=schedule_purple width='.$width.' rowspan='.$rowspan.' colspan='.$colspan.'>'.$ta.'<br>'.$time.'<br>'.$room.'</td>';
|
||||
} else {
|
||||
print '<td class=schedule_purple width='.$width.' rowspan='.$rowspan.' colspan='.$colspan.'>'.$ta.'<br>'.$room.'</td>';
|
||||
}
|
||||
}
|
||||
|
||||
function schedule_studyspace($room,$rowspan,$time,$colspan=1) {
|
||||
print '<td class=schedule_ltgrey rowspan='.$rowspan.' colspan='.$colspan.'>study space<br>'.$time.'<br>'.$room.'</td>';
|
||||
}
|
||||
|
||||
function schedule_alac($startdate,$time,$room,$colspan=1,$width="100%",$title="ALAC Drop In Tutoring") {
|
||||
print '<td class=schedule_grey rowspan=4 colspan='.$colspan.'>';
|
||||
print '<a href="http://info.rpi.edu/advising-learning-assistance/learning-assistance/#TutoringServices">'.$title.'</a>';
|
||||
print '<br><em>Start date: '.$startdate.'</em>';
|
||||
print '<br>'.$time.'<br>'.$room.'</td>';
|
||||
}
|
||||
|
||||
|
||||
|
||||
function blank($rowspan=1,$colspan=1,$width=null) {
|
||||
if (isset($width)) {
|
||||
print '<td class=schedule_white rowspan='.$rowspan.' colspan='.$colspan.' width='.$width.'> </td>';
|
||||
} else {
|
||||
print '<td class=schedule_white rowspan='.$rowspan.' colspan='.$colspan.'> </td>';
|
||||
}
|
||||
}
|
||||
|
||||
function schedule_time($t) {
|
||||
print '<td class=schedule_white><b>'.$t.'</b></td>';
|
||||
}
|
||||
|
||||
function schedule_day($d,$width,$colspan=1) {
|
||||
print '<td class=schedule_white width='.$width.' colspan='.$colspan.'>'.$d.'</td>';
|
||||
}
|
||||
|
||||
function row_begin($time=null) {
|
||||
print '<tr height="5%">';
|
||||
if(isset($time))
|
||||
schedule_time($time);
|
||||
else
|
||||
blank(1,1,"1%");
|
||||
}
|
||||
|
||||
function row_end() {
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
192
php/syllabus.php
Executable file
192
php/syllabus.php
Executable file
@@ -0,0 +1,192 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.syllabus-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000 !important;
|
||||
}
|
||||
.syllabus-selected .icon-title {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000 !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="left-sidebox">
|
||||
<h1>Syllabus</h1>
|
||||
</td>
|
||||
<td class="right-sidebox">
|
||||
<div id="side-nav-buttons" class="my_sidebox">
|
||||
<ul class="sidebox">
|
||||
<li><a href="syllabus.php" class="nav-row syllabus-selected sidebox">Syllabus</a></li>
|
||||
<li><a href="grading.php" class="nav-row">Course Grades</a></li>
|
||||
<li><a href="lecture_polls.php" class="nav-row">Submini Lecture Polls</a></li>
|
||||
<li><a href="homework_policies.php" class="nav-row">Homework Policies</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</table>
|
||||
|
||||
|
||||
<h2>Course Description</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
This course covers fundamental data structures and their use in
|
||||
programming. This includes both class design and features of the C++
|
||||
programming language. Much of our discussion will be built around the
|
||||
design and use of the C++ standard library (STL). By using the
|
||||
standard library, students will be able to write reasonably
|
||||
sophisticated programs quickly.
|
||||
</p>
|
||||
|
||||
<h2>Learning Outcomes</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
Students who have successfully completed this course will be able to:
|
||||
</p>
|
||||
|
||||
<ul class=DS_UL>
|
||||
|
||||
<li class=DS_LI>
|
||||
Demonstrate strong problem solving skills in constructing
|
||||
complete C++ programs to tackle exercises inspired by real-world
|
||||
problems.
|
||||
|
||||
|
||||
<li class=DS_LI>
|
||||
Analyze the performance of algorithms and data structures.
|
||||
|
||||
|
||||
<li class=DS_LI>
|
||||
Select and use the most appropriate data structure from the C++
|
||||
standard library (STL) for a particular programming task.
|
||||
|
||||
|
||||
<li class=DS_LI>
|
||||
Design and implement efficient customized data structures.
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
<h2>Prerequisites</h2>
|
||||
|
||||
<p class=DS_P>
|
||||
CSCI 1100 Computer Science I, equivalent university credit,
|
||||
or a 5 on the AP Computer Science A Exam is the required (as of Spring 2023)
|
||||
pre-requisite for this course. Here are the concepts that we assume
|
||||
you have learned prior to taking CSCI 1200 Data Structures:
|
||||
</p>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><b>Programming:</b></li>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI>Arithmetic expressions, if/else statements</li>
|
||||
|
||||
<li class=DS_LI>Writing your own functions, including the following:</li>
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI>Passing arguments to the function from the calling function</li>
|
||||
<li class=DS_LI>Reference variables (call by value vs. call by reference)</li>
|
||||
<li class=DS_LI>Returning a value from a function to the calling function</li>
|
||||
<li class=DS_LI>Scope and lifetime of variables, local vs. global variables</li>
|
||||
</ul>
|
||||
|
||||
<li class=DS_LI>One and two dimensional arrays and/or vectors</li>
|
||||
<li class=DS_LI><tt>while</tt> and <tt>for</tt> loops, including nested loops</li>
|
||||
<li class=DS_LI>Reading data from files, and writing data to files</li>
|
||||
<li class=DS_LI>Some basic understanding and use of classes</li>
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI>Creating your own simple classes</li>
|
||||
<li class=DS_LI>Calling member functions</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
<li class=DS_LI><b>Problem Solving:</b>
|
||||
Given a problem you should be able to design an algorithm or
|
||||
algorithms to solve the problem, and implement and debug an efficient
|
||||
solution. You should have written a number of programs of 100 lines
|
||||
or more consisting of several different functions. Some examples:
|
||||
</li>
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI>Count the number of times each letter appears in a file</li>
|
||||
<li class=DS_LI>Find the maximum value in an array or vector</li>
|
||||
<li class=DS_LI>Insert a new element into a sorted array in its correct place</li>
|
||||
<li class=DS_LI>Find the value closest to the average in a vector</li>
|
||||
<li class=DS_LI>Find the two closest values in a vector</li>
|
||||
</ul>
|
||||
|
||||
<li class=DS_LI><b>Algorithmic concepts:</b></li>
|
||||
You should have seen and have a basic understanding of the following
|
||||
concepts:
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI>Recursion</li>
|
||||
<li class=DS_LI>Run time analysis of algorithms (big O notation)</li>
|
||||
<li class=DS_LI>Elementary searching and sorting algorithms</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
<h3>Programming Languages: C++ vs. Java vs. Python</h3>
|
||||
|
||||
<p class=DS_P>
|
||||
The language used in this course is C++ but you do not need to know
|
||||
C++ before taking this class.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
The Computer Science I class at RPI is taught in the Python
|
||||
programming language. Transitioning a solid foundation in problem
|
||||
solving, computational thinking, and implementation to a new
|
||||
programming language is an important skill for all computer
|
||||
scientists. Once you are comfortable with your new programming
|
||||
environment (code editor, compiler/interpreter, reference material,
|
||||
etc.) you will soon be busily and productively coding again!
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
Similarly, many students enter this course having studied Java in
|
||||
their high school AP Computer Science class. If you are a reasonably
|
||||
proficient Java programmer, you should easily adapt to the differences
|
||||
between the C++ and Java.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
See also: <a href="crash_course_cpp_syntax.php">Crash Course in C++ Syntax</a>
|
||||
</p>
|
||||
|
||||
|
||||
<h3>Warning</h3>
|
||||
|
||||
<p class=DS_P>
|
||||
This course moves at a rapid pace and will likely be substantially
|
||||
more difficult than your previous programming classes. The homework
|
||||
assignments are challenging and students should start the assignments
|
||||
as soon as they are posted, so there is plenty of time to ask the
|
||||
instructor and TAs questions on the <a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/forum">Discussion Forum</a> and in office hours. <em>Students
|
||||
should not get behind at any point in the semester.</em> Students
|
||||
should work practice problems and study examples from lecture.
|
||||
Working with other students and working with tutors and TAs are both
|
||||
encouraged, but students need to be certain they understand the
|
||||
material and can do problems on their own.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
See also advice from
|
||||
<a href="advice_S14.php">
|
||||
Spring 2014 CSCI 1200 Data Structures students</a>.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
<b><em>
|
||||
Be sure to click through the other pages linked in the upper right
|
||||
menu.
|
||||
</em></b>
|
||||
</p>
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
17
php/template_after.php
Executable file
17
php/template_after.php
Executable file
@@ -0,0 +1,17 @@
|
||||
|
||||
<!-- CLOSE THE CONTENT DIV -->
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer>
|
||||
© 2022
|
||||
<a href="https://submitty.org" target="_blank" class="black-btn">Submitty</a>
|
||||
<span class="footer-separator">|</span> <a href="https://github.com/Submitty/Submitty" target="_blank" title="Visit our GitHub" aria-label="Visit our GitHub" class="black-btn"><i class="fab fa-github fa-lg"></i></a>
|
||||
<span class="footer-separator">|</span> <a href="https://rcos.io" target="_blank" class="black-btn">An RCOS project</a>
|
||||
|
||||
<span class="footer-separator">|</span>
|
||||
<a href="https://info.rpi.edu/statement-of-accessibility" target="_blank" class="black-btn">Statement of Accessibility</a>
|
||||
|
||||
</footer>
|
||||
</div> </body>
|
||||
</html>
|
||||
678
php/template_before.php
Executable file
678
php/template_before.php
Executable file
@@ -0,0 +1,678 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Submitty Csci1200: Data Structures</title>
|
||||
<link rel="shortcut icon" href="https://submitty.cs.rpi.edu/img/favicon.ico" type="image/x-icon" />
|
||||
|
||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
|
||||
|
||||
<link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic,700italic' />
|
||||
<link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css?family=PT+Sans:700,700italic' />
|
||||
<link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css?family=Inconsolata' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/vendor/jquery-ui/jquery-ui.min.css?v=1566317036' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/vendor/bootstrap/css/bootstrap-grid.min.css?v=1566317036' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/css/colors.css?v=1566312135' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/css/server.css?v=1566312135' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/css/global.css?v=1566312135' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/css/menu.css?v=1566312135' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/css/sidebar.css?v=1566312135' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/css/bootstrap.css?v=1566312135' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/css/diff-viewer.css?v=1566312135' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/css/glyphicons-halflings.css?v=1566312135' />
|
||||
|
||||
<script type='text/javascript' src='https://submitty.cs.rpi.edu/vendor/jquery/jquery.min.js?v=1566317036'></script>
|
||||
<script type='text/javascript' src='https://submitty.cs.rpi.edu/vendor/jquery-ui/jquery-ui.min.js?v=1566317036'></script>
|
||||
<script type='text/javascript' src='https://submitty.cs.rpi.edu/js/diff-viewer.js?v=1557763585'></script>
|
||||
<script type='text/javascript' src='https://submitty.cs.rpi.edu/js/server.js?v=1566312135'></script>
|
||||
<script type='text/javascript' src='https://submitty.cs.rpi.edu/js/menu.js?v=1566312135'></script>
|
||||
|
||||
<link rel='stylesheet' type='text/css' href='f23_csci1200_main.css' />
|
||||
<link rel='stylesheet' type='text/css' href='override.css' />
|
||||
|
||||
</head>
|
||||
<script>var onAjaxInit;</script>
|
||||
<body data-base-url="https://submitty.cs.rpi.edu/" data-course-url="https://submitty.cs.rpi.edu/courses/f23/csci1200" onload="if (onAjaxInit) { onAjaxInit(); }">
|
||||
<a id="skip-nav" class="skip-btn" href="#main">Skip to main content</a>
|
||||
<div id="submitty-body" class="flex-col">
|
||||
<div id="mobile-menu">
|
||||
<div id="menu-header" class="flex-row">
|
||||
<a href="https://submitty.cs.rpi.edu/" aria-label="Go to Submitty Home"><h1><font color="white">Submitty</font></h1></a>
|
||||
<button id="menu-exit"><span class="screen-reader">Close Menu</span><i class="fas fa-times"></i></button>
|
||||
</div>
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<a href="https://www.cs.rpi.edu/academics/courses/fall23/csci1200/"
|
||||
title="Course Home"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-course-home"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-home"></i>
|
||||
|
||||
<span class="icon-title"> Course Home </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200"
|
||||
title="Gradeables"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-submitty"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-star"></i>
|
||||
|
||||
<span class="icon-title"> Gradeables </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/notifications"
|
||||
title="Notifications"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-notifications"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-bell"></i>
|
||||
|
||||
<span class="icon-title"> Notifications </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/office_hours_queue"
|
||||
title="Office Hours Queue"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-office-hours"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-door-closed"></i>
|
||||
|
||||
<span class="icon-title"> Office Hours Queue</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/polls"
|
||||
title="Submini Polls"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-polls"
|
||||
>
|
||||
<span class="flex-line"> <i class="far fa-question-circle"></i>
|
||||
|
||||
<span class="icon-title"> Submini Polls</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/course_materials"
|
||||
title="Course Materials"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-course-materials"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-copy"></i>
|
||||
|
||||
<span class="icon-title"> Course Materials </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/forum"
|
||||
title="Discussion Forum"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-forum"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-comments"></i>
|
||||
|
||||
<span class="icon-title"> Discussion Forum </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<hr />
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/syllabus.php"
|
||||
title="Syllabus"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-syllabus"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-university"></i>
|
||||
|
||||
<span class="icon-title"> Syllabus </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/course_calendar.php"
|
||||
title="Course Calendar"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-calendar"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-calendar"></i>
|
||||
|
||||
<span class="icon-title"> Course Calendar </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/schedule.php"
|
||||
title="Weekly Office Hours and Lab Schedule"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-weekly_office_hours_and_lab_schedule"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-briefcase"></i>
|
||||
|
||||
<span class="icon-title"> Weekly Office Hours and Lab Schedule </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/crash_course_cpp_syntax.php"
|
||||
title="Crash Course in C++"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-crash_course_in_cpp"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-school"></i>
|
||||
|
||||
<span class="icon-title"> Crash Course in C++ </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/development_environment.php"
|
||||
title="Development Environment"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-development_environment"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-bug"></i>
|
||||
|
||||
<span class="icon-title"> Development Environment </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/programming_information.php"
|
||||
title="Programming Information"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-programming_information"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-laptop"></i>
|
||||
|
||||
<span class="icon-title"> Programming Information </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/academic_integrity.php"
|
||||
title="Collaboration Policy & Academic Integrity"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-collaboration_policy_&_academic_integrity"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-flag"></i>
|
||||
|
||||
<span class="icon-title"> Collaboration Policy & Academic Integrity </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/getting_help.php"
|
||||
title="Getting Help"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-getting_help"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-book"></i>
|
||||
|
||||
<span class="icon-title"> Getting Help </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<hr />
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/grades"
|
||||
title="Rainbow Grades"
|
||||
class="flex-row nav-row" id="mobile-nav-sidebar-late-days">
|
||||
<span class="flex-line"> <i class="fa fa-chart-line"></i>
|
||||
<span class="icon-title"> Rainbow Grades </span></span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/late_table"
|
||||
title="My Late Days/Extensions"
|
||||
class="flex-row nav-row" id="mobile-nav-sidebar-late-days">
|
||||
<span class="flex-line"> <i class="fa fa-calendar"></i>
|
||||
<span class="icon-title"> My Late Days/Extensions </span></span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<hr />
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/"
|
||||
title="My Courses">
|
||||
<span class="flex-line"> <i class="fa fa-book-reader"></i>
|
||||
<span class="icon-title"> My Courses </span></span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/user_profile"
|
||||
title="My Profile">
|
||||
<span class="flex-line"> <i class="fa fa-user"></i>
|
||||
<span class="icon-title"> My Profile </span></span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/authentication_tokens"
|
||||
title="Authentication Tokens"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-authentication-tokens"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-key"></i>
|
||||
|
||||
<span class="icon-title"> Authentication Tokens </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/calendar"
|
||||
title="Calendar"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-calendar"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-calendar"></i>
|
||||
|
||||
<span class="icon-title"> Calendar </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
<hr />
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
<div id="menu-overlay"></div>
|
||||
<nav class="flex-row shadow">
|
||||
<div id="nav-links">
|
||||
<a id="home-button" class="black-btn" href="https://submitty.cs.rpi.edu/" aria-label="Go to Submitty Home"><i class="fas fa-home"></i></a>
|
||||
<div id="breadcrumbs">
|
||||
<div class="breadcrumb">
|
||||
<span>RPI Computer Science</span>
|
||||
<a class="external-breadcrumb" href="https://science.rpi.edu/computer-science" target="_blank" aria-label="Go to RPI Computer Science"><i class="fas fa-external-link-alt"></i></a>
|
||||
</div>
|
||||
<span>></span> <div class="breadcrumb">
|
||||
<a href='https://submitty.cs.rpi.edu/'>Submitty</a>
|
||||
</div>
|
||||
<span>></span>
|
||||
|
||||
<div class="breadcrumb">
|
||||
<span>Data Structures</span>
|
||||
<a class="external-breadcrumb" href="https://www.cs.rpi.edu/academics/courses/fall23/csci1200/" target="_blank" aria-label="Go to f23 Data Structures"><i class="fas fa-external-link-alt"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a class="flex-col" id="logo-box" href="https://submitty.org" target="_blank" aria-label="Visit submitty dot org">
|
||||
<img id="logo-submitty" src="https://submitty.cs.rpi.edu/img/submitty_logo.png" alt="Submitty Logo">
|
||||
</a>
|
||||
<button id="menu-button" class="black-btn">
|
||||
MENU
|
||||
</button>
|
||||
</nav>
|
||||
<noscript class="system-message danger">
|
||||
You must have JavaScript enabled for Submitty to function properly. Please re-enable it when browsing this site.
|
||||
</noscript>
|
||||
<div id='messages'>
|
||||
</div>
|
||||
<div id="wrapper">
|
||||
<aside>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://www.cs.rpi.edu/academics/courses/fall23/csci1200/"
|
||||
title="Course Home"
|
||||
class="flex-row nav-row home-selected"
|
||||
id="nav-sidebar-course-home"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-home"></i>
|
||||
|
||||
<span class="icon-title"> Course Home </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200"
|
||||
title="Gradeables"
|
||||
class="flex-row nav-row"
|
||||
id="nav-sidebar-submitty"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-star"></i>
|
||||
|
||||
<span class="icon-title"> Gradeables </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/notifications"
|
||||
title="Notifications"
|
||||
class="flex-row nav-row"
|
||||
id="nav-sidebar-notifications"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-bell"></i>
|
||||
|
||||
<span class="icon-title"> Notifications </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/office_hours_queue"
|
||||
title="Office Hours Queue"
|
||||
class="flex-row nav-row"
|
||||
id="nav-sidebar-office-hours"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-door-closed"></i>
|
||||
|
||||
<span class="icon-title"> Office Hours Queue</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/polls"
|
||||
title="Submini Polls"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-polls"
|
||||
>
|
||||
<span class="flex-line"> <i class="far fa-question-circle"></i>
|
||||
|
||||
<span class="icon-title"> Submini Polls</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/course_materials"
|
||||
title="Course Materials"
|
||||
class="flex-row nav-row"
|
||||
id="nav-sidebar-course-materials"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-copy"></i>
|
||||
|
||||
<span class="icon-title"> Course Materials </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/forum"
|
||||
title="Discussion Forum"
|
||||
class="flex-row nav-row"
|
||||
id="nav-sidebar-forum"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-comments"></i>
|
||||
|
||||
<span class="icon-title"> Discussion Forum </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<hr />
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/syllabus.php"
|
||||
title="Syllabus"
|
||||
class="flex-row nav-row syllabus-selected"
|
||||
id="nav-sidebar-syllabus"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-university"></i>
|
||||
|
||||
<span class="icon-title"> Syllabus </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/course_calendar.php"
|
||||
title="Course Calendar"
|
||||
class="flex-row nav-row calendar-selected"
|
||||
id="nav-sidebar-calendar"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-calendar"></i>
|
||||
|
||||
<span class="icon-title"> Course Calendar </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/schedule.php"
|
||||
title="Weekly Office Hours and Lab Schedule"
|
||||
class="flex-row nav-row schedule-selected"
|
||||
id="nav-sidebar-weekly_office_hours_and_lab_schedule"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-briefcase"></i>
|
||||
|
||||
<span class="icon-title"> Weekly Office Hours and Lab Schedule </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/crash_course_cpp_syntax.php"
|
||||
title="Crash Course in C++"
|
||||
class="flex-row nav-row crash_course_in_cpp-selected"
|
||||
id="mobile-nav-sidebar-crash_course_in_cpp"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-school"></i>
|
||||
|
||||
<span class="icon-title"> Crash Course in C++ </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/development_environment.php"
|
||||
title="Development Environment"
|
||||
class="flex-row nav-row cpp-selected"
|
||||
id="nav-sidebar-development_environment"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-bug"></i>
|
||||
|
||||
<span class="icon-title"> Development Environment </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/programming_information.php"
|
||||
title="Programming Information"
|
||||
class="flex-row nav-row programming_information-selected"
|
||||
id="nav-sidebar-programming_information"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-laptop"></i>
|
||||
|
||||
<span class="icon-title"> Programming Information </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/academic_integrity.php"
|
||||
title="Collaboration Policy & Academic Integrity"
|
||||
class="flex-row nav-row academic-integrity-selected"
|
||||
id="nav-sidebar-collaboration_policy_&_academic_integrity"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-flag"></i>
|
||||
|
||||
<span class="icon-title"> Collaboration Policy & Academic Integrity </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/getting_help.php"
|
||||
title="Getting Help"
|
||||
class="flex-row nav-row getting-help-selected"
|
||||
id="nav-sidebar-getting_help"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-book"></i>
|
||||
|
||||
<span class="icon-title"> Getting Help </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<hr />
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/grades"
|
||||
title="Rainbow Grades"
|
||||
class="flex-row nav-row"
|
||||
id="nav-sidebar-grades"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-chart-line"></i>
|
||||
|
||||
<span class="icon-title"> Rainbow Grades </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/late_table"
|
||||
title="My Late Days/Extensions"
|
||||
class="flex-row nav-row"
|
||||
id="nav-sidebar-late-days"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-calendar"></i>
|
||||
|
||||
<span class="icon-title"> My Late Days/Extensions </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<hr />
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/" title="My Courses" class="flex-row nav-row">
|
||||
<span class="flex-line"> <i class="fa fa-book-reader"></i>
|
||||
<span class="icon-title"> My Courses </span></span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/user_profile" title="My Profile" class="flex-row nav-row">
|
||||
<span class="flex-line"> <i class="fa fa-user"></i>
|
||||
<span class="icon-title"> My Profile </span></span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/authentication_tokens"
|
||||
title="Authentication Tokens"
|
||||
class="flex-row nav-row"
|
||||
id="nav-sidebar-authentication-tokens"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-key"></i>
|
||||
|
||||
<span class="icon-title"> Authentication Tokens </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/calendar"
|
||||
title="Calendar"
|
||||
class="flex-row nav-row"
|
||||
id="nav-sidebar-calendar"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-calendar"></i>
|
||||
|
||||
<span class="icon-title"> Calendar </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</aside>
|
||||
<main id="main">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
|
||||
|
||||
<!-- OPEN THE CONTENT DIV -->
|
||||
<div class="content">
|
||||
676
php/template_before_crash_course.php
Executable file
676
php/template_before_crash_course.php
Executable file
@@ -0,0 +1,676 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Submitty Csci1200: Data Structures</title>
|
||||
<link rel="shortcut icon" href="https://submitty.cs.rpi.edu/img/favicon.ico" type="image/x-icon" />
|
||||
|
||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
|
||||
|
||||
<link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic,700italic' />
|
||||
<link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css?family=PT+Sans:700,700italic' />
|
||||
<link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css?family=Inconsolata' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/vendor/jquery-ui/jquery-ui.min.css?v=1566317036' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/vendor/bootstrap/css/bootstrap-grid.min.css?v=1566317036' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/css/colors.css?v=1566312135' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/css/server.css?v=1566312135' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/css/global.css?v=1566312135' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/css/menu.css?v=1566312135' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/css/sidebar.css?v=1566312135' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/css/bootstrap.css?v=1566312135' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/css/diff-viewer.css?v=1566312135' />
|
||||
<link rel='stylesheet' type='text/css' href='https://submitty.cs.rpi.edu/css/glyphicons-halflings.css?v=1566312135' />
|
||||
|
||||
<script type='text/javascript' src='https://submitty.cs.rpi.edu/vendor/jquery/jquery.min.js?v=1566317036'></script>
|
||||
<script type='text/javascript' src='https://submitty.cs.rpi.edu/vendor/jquery-ui/jquery-ui.min.js?v=1566317036'></script>
|
||||
<script type='text/javascript' src='https://submitty.cs.rpi.edu/js/diff-viewer.js?v=1557763585'></script>
|
||||
<script type='text/javascript' src='https://submitty.cs.rpi.edu/js/server.js?v=1566312135'></script>
|
||||
<script type='text/javascript' src='https://submitty.cs.rpi.edu/js/menu.js?v=1566312135'></script>
|
||||
|
||||
<link rel='stylesheet' type='text/css' href='f23_csci1200_main.css' />
|
||||
<link rel='stylesheet' type='text/css' href='override_crash_course.css' />
|
||||
|
||||
</head>
|
||||
<script>var onAjaxInit;</script>
|
||||
<body data-base-url="https://submitty.cs.rpi.edu/" data-course-url="https://submitty.cs.rpi.edu/courses/f23/csci1200" onload="if (onAjaxInit) { onAjaxInit(); }">
|
||||
<a id="skip-nav" class="skip-btn" href="#main">Skip to main content</a>
|
||||
<div id="submitty-body" class="flex-col">
|
||||
<div id="mobile-menu">
|
||||
<div id="menu-header" class="flex-row">
|
||||
<a href="https://submitty.cs.rpi.edu/" aria-label="Go to Submitty Home"><h1><font color="white">Submitty</font></h1></a>
|
||||
<button id="menu-exit"><span class="screen-reader">Close Menu</span><i class="fas fa-times"></i></button>
|
||||
</div>
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<a href="https://www.cs.rpi.edu/academics/courses/fall23/csci1200/"
|
||||
title="Course Home"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-course-home"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-home"></i>
|
||||
|
||||
<span class="icon-title"> Course Home </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200"
|
||||
title="Gradeables"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-submitty"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-star"></i>
|
||||
|
||||
<span class="icon-title"> Gradeables </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/notifications"
|
||||
title="Notifications"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-notifications"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-bell"></i>
|
||||
|
||||
<span class="icon-title"> Notifications </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/office_hours_queue"
|
||||
title="Office Hours Queue"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-office-hours"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-door-closed"></i>
|
||||
|
||||
<span class="icon-title"> Office Hours Queue</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/polls"
|
||||
title="Polls"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-polls"
|
||||
>
|
||||
<span class="flex-line"> <i class="far fa-question-circle"></i>
|
||||
|
||||
<span class="icon-title"> Polls</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/course_materials"
|
||||
title="Course Materials"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-course-materials"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-copy"></i>
|
||||
|
||||
<span class="icon-title"> Course Materials </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/forum"
|
||||
title="Discussion Forum"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-forum"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-comments"></i>
|
||||
|
||||
<span class="icon-title"> Discussion Forum </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<hr />
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/syllabus.php"
|
||||
title="Syllabus"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-syllabus"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-university"></i>
|
||||
|
||||
<span class="icon-title"> Syllabus </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/course_calendar.php"
|
||||
title="Course Calendar"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-calendar"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-calendar"></i>
|
||||
|
||||
<span class="icon-title"> Course Calendar </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/schedule.php"
|
||||
title="Weekly Office Hours and Lab Schedule"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-weekly_office_hours_and_lab_schedule"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-briefcase"></i>
|
||||
|
||||
<span class="icon-title"> Weekly Office Hours and Lab Schedule </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/crash_course_cpp_syntax.php"
|
||||
title="Crash Course in C++"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-crash_course_in_cpp"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-school"></i>
|
||||
|
||||
<span class="icon-title"> Crash Course in C++ </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/development_environment.php"
|
||||
title="Development Environment"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-development_environment"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-bug"></i>
|
||||
|
||||
<span class="icon-title"> Development Environment </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/programming_information.php"
|
||||
title="Programming Information"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-programming_information"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-laptop"></i>
|
||||
|
||||
<span class="icon-title"> Programming Information </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/academic_integrity.php"
|
||||
title="Collaboration Policy & Academic Integrity"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-collaboration_policy_&_academic_integrity"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-flag"></i>
|
||||
|
||||
<span class="icon-title"> Collaboration Policy & Academic Integrity </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/getting_help.php"
|
||||
title="Getting Help"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-getting_help"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-book"></i>
|
||||
|
||||
<span class="icon-title"> Getting Help </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<hr />
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/grades"
|
||||
title="Rainbow Grades"
|
||||
class="flex-row nav-row" id="mobile-nav-sidebar-late-days">
|
||||
<span class="flex-line"> <i class="fa fa-chart-line"></i>
|
||||
<span class="icon-title"> Rainbow Grades </span></span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/late_table"
|
||||
title="My Late Days/Extensions"
|
||||
class="flex-row nav-row" id="mobile-nav-sidebar-late-days">
|
||||
<span class="flex-line"> <i class="fa fa-calendar"></i>
|
||||
<span class="icon-title"> My Late Days/Extensions </span></span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<hr />
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/"
|
||||
title="My Courses">
|
||||
<span class="flex-line"> <i class="fa fa-book-reader"></i>
|
||||
<span class="icon-title"> My Courses </span></span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/user_profile"
|
||||
title="My Profile">
|
||||
<span class="flex-line"> <i class="fa fa-user"></i>
|
||||
<span class="icon-title"> My Profile </span></span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/authentication_tokens"
|
||||
title="Authentication Tokens"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-authentication-tokens"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-key"></i>
|
||||
|
||||
<span class="icon-title"> Authentication Tokens </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/calendar"
|
||||
title="Calendar"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-calendar"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-calendar"></i>
|
||||
|
||||
<span class="icon-title"> Calendar </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<hr />
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
<div id="menu-overlay"></div>
|
||||
<nav class="flex-row shadow">
|
||||
<div id="nav-links">
|
||||
<a id="home-button" class="black-btn" href="https://submitty.cs.rpi.edu/" aria-label="Go to Submitty Home"><i class="fas fa-home"></i></a>
|
||||
<div id="breadcrumbs">
|
||||
<div class="breadcrumb">
|
||||
<span>RPI Computer Science</span>
|
||||
<a class="external-breadcrumb" href="https://science.rpi.edu/computer-science" target="_blank" aria-label="Go to RPI Computer Science"><i class="fas fa-external-link-alt"></i></a>
|
||||
</div>
|
||||
<span>></span> <div class="breadcrumb">
|
||||
<a href='https://submitty.cs.rpi.edu/'>Submitty</a>
|
||||
</div>
|
||||
<span>></span>
|
||||
|
||||
<div class="breadcrumb">
|
||||
<span>Data Structures</span>
|
||||
<!-- <a class="external-breadcrumb" href="https://www.cs.rpi.edu/academics/courses/fall23/csci1200/" target="_blank" aria-label="Go to f23 Data Structures"><i class="fas fa-external-link-alt"></i></a>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a class="flex-col" id="logo-box" href="https://submitty.org" target="_blank" aria-label="Visit submitty dot org">
|
||||
<img id="logo-submitty" src="https://submitty.cs.rpi.edu//img/submitty_logo.png" alt="Submitty Logo">
|
||||
</a>
|
||||
<button id="menu-button" class="black-btn">
|
||||
MENU
|
||||
</button>
|
||||
</nav>
|
||||
<noscript class="system-message danger">
|
||||
You must have JavaScript enabled for Submitty to function properly. Please re-enable it when browsing this site.
|
||||
</noscript>
|
||||
<div id='messages'>
|
||||
</div>
|
||||
<div id="wrapper">
|
||||
<aside>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://www.cs.rpi.edu/academics/courses/fall23/csci1200/"
|
||||
title="Course Home"
|
||||
class="flex-row nav-row home-selected"
|
||||
id="nav-sidebar-course-home"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-home"></i>
|
||||
|
||||
<span class="icon-title"> Course Home </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200"
|
||||
title="Gradeables"
|
||||
class="flex-row nav-row"
|
||||
id="nav-sidebar-submitty"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-star"></i>
|
||||
|
||||
<span class="icon-title"> Gradeables </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/notifications"
|
||||
title="Notifications"
|
||||
class="flex-row nav-row"
|
||||
id="nav-sidebar-notifications"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-bell"></i>
|
||||
|
||||
<span class="icon-title"> Notifications </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/office_hours_queue"
|
||||
title="Office Hours Queue"
|
||||
class="flex-row nav-row"
|
||||
id="nav-sidebar-office-hours"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-door-closed"></i>
|
||||
|
||||
<span class="icon-title"> Office Hours Queue</span>
|
||||
</span>
|
||||
</a>
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/polls"
|
||||
title="Polls"
|
||||
class="flex-row nav-row"
|
||||
id="mobile-nav-sidebar-polls"
|
||||
>
|
||||
<span class="flex-line"> <i class="far fa-question-circle"></i>
|
||||
|
||||
<span class="icon-title"> Polls</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/course_materials"
|
||||
title="Course Materials"
|
||||
class="flex-row nav-row"
|
||||
id="nav-sidebar-course-materials"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-copy"></i>
|
||||
|
||||
<span class="icon-title"> Course Materials </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/forum"
|
||||
title="Discussion Forum"
|
||||
class="flex-row nav-row"
|
||||
id="nav-sidebar-forum"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-comments"></i>
|
||||
|
||||
<span class="icon-title"> Discussion Forum </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<hr />
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/syllabus.php"
|
||||
title="Syllabus"
|
||||
class="flex-row nav-row syllabus-selected"
|
||||
id="nav-sidebar-syllabus"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-university"></i>
|
||||
|
||||
<span class="icon-title"> Syllabus </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/course_calendar.php"
|
||||
title="Course Calendar"
|
||||
class="flex-row nav-row calendar-selected"
|
||||
id="nav-sidebar-calendar"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-calendar"></i>
|
||||
|
||||
<span class="icon-title"> Course Calendar </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/schedule.php"
|
||||
title="Weekly Office Hours and Lab Schedule"
|
||||
class="flex-row nav-row schedule-selected"
|
||||
id="nav-sidebar-weekly_office_hours_and_lab_schedule"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-briefcase"></i>
|
||||
|
||||
<span class="icon-title"> Weekly Office Hours and Lab Schedule </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/crash_course_cpp_syntax.php"
|
||||
title="Crash Course in C++"
|
||||
class="flex-row nav-row crash_course_in_cpp-selected"
|
||||
id="mobile-nav-sidebar-crash_course_in_cpp"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-school"></i>
|
||||
|
||||
<span class="icon-title"> Crash Course in C++ </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/development_environment.php"
|
||||
title="Development Environment"
|
||||
class="flex-row nav-row cpp-selected"
|
||||
id="nav-sidebar-development_environment"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-bug"></i>
|
||||
|
||||
<span class="icon-title"> Development Environment </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/programming_information.php"
|
||||
title="Programming Information"
|
||||
class="flex-row nav-row programming_information-selected"
|
||||
id="nav-sidebar-programming_information"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-laptop"></i>
|
||||
|
||||
<span class="icon-title"> Programming Information </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/academic_integrity.php"
|
||||
title="Collaboration Policy & Academic Integrity"
|
||||
class="flex-row nav-row academic-integrity-selected"
|
||||
id="nav-sidebar-collaboration_policy_&_academic_integrity"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-flag"></i>
|
||||
|
||||
<span class="icon-title"> Collaboration Policy & Academic Integrity </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://www.cs.rpi.edu/academics/courses/fall23/csci1200/getting_help.php"
|
||||
title="Getting Help"
|
||||
class="flex-row nav-row getting-help-selected"
|
||||
id="nav-sidebar-getting_help"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-book"></i>
|
||||
|
||||
<span class="icon-title"> Getting Help </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<hr />
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/grades"
|
||||
title="Rainbow Grades"
|
||||
class="flex-row nav-row"
|
||||
id="nav-sidebar-grades"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-chart-line"></i>
|
||||
|
||||
<span class="icon-title"> Rainbow Grades </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/courses/f23/csci1200/late_table"
|
||||
title="My Late Days/Extensions"
|
||||
class="flex-row nav-row"
|
||||
id="nav-sidebar-late-days"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-calendar"></i>
|
||||
|
||||
<span class="icon-title"> My Late Days/Extensions </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<hr />
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/" title="My Courses" class="flex-row nav-row">
|
||||
<span class="flex-line"> <i class="fa fa-book-reader"></i>
|
||||
<span class="icon-title"> My Courses </span></span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/user_profile" title="My Profile" class="flex-row nav-row">
|
||||
<span class="flex-line"> <i class="fa fa-user"></i>
|
||||
<span class="icon-title"> My Profile </span></span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/authentication_tokens"
|
||||
title="Authentication Tokens"
|
||||
class="flex-row nav-row"
|
||||
id="nav-sidebar-authentication-tokens"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-key"></i>
|
||||
|
||||
<span class="icon-title"> Authentication Tokens </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://submitty.cs.rpi.edu/calendar"
|
||||
title="Calendar"
|
||||
class="flex-row nav-row"
|
||||
id="nav-sidebar-calendar"
|
||||
data-toggle="tooltip"
|
||||
>
|
||||
<span class="flex-line"> <i class="fa fa-calendar"></i>
|
||||
|
||||
<span class="icon-title"> Calendar </span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</aside>
|
||||
<main id="main">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
|
||||
|
||||
<!-- OPEN THE CONTENT DIV -->
|
||||
<div class="content">
|
||||
390
php/wsl.php
Executable file
390
php/wsl.php
Executable file
@@ -0,0 +1,390 @@
|
||||
<?php include 'global_colors.php'; ?>
|
||||
<style>
|
||||
.cpp-selected {
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
.cpp-selected .icon-title{
|
||||
background-color: var(--sidebar-highlight-color);
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php include 'template_before.php'; ?>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="left-sidebox">
|
||||
<h1>Using Windows Subsystem for Linux (WSL)</h1>
|
||||
</td>
|
||||
<td class="right-sidebox">
|
||||
<div id="side-nav-buttons" class="my_sidebox">
|
||||
<ul class="sidebox">
|
||||
<li><a href="development_environment.php" class="nav-row">C++ Installation Choices for Your Operating System</a></li>
|
||||
<li><a href="wsl.php" class="nav-row cpp-selected sidebox">Using Windows Subsystem for Linux (WSL)</a></li>
|
||||
<li><a href="editors_ides.php" class="nav-row" id=nav-sidebar>Editors, Compilers, and IDEs</a></li>
|
||||
<li><a href="memory_debugging.php" class="nav-row">Memory Debugging</a></li>
|
||||
<li><a href="installation_test.php" class="nav-row">Test Your Installation</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</table>
|
||||
|
||||
<p class=DS_P>
|
||||
The instructions below apply only to those using Windows as their
|
||||
primary operating system. We recommend WSL over Cygwin or VirtualBox
|
||||
or dual booting Linux — unless you already know how to do that! See
|
||||
<a href="development_environment.php">C++ Installation Choices for Your
|
||||
Operating System</a>.
|
||||
</p>
|
||||
</br>
|
||||
|
||||
<ol class=DS_OL>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
<b>You'll need Windows 10, Version 1709 (2017 Fall Creators Update) or later to use WSL</b><br>
|
||||
You can check your version by going to Start Menu → Settings → System → About.<br>
|
||||
And under the "Windows specification" section, look for the "Version".
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
<b>Turn on "Windows Subsystem for Linux":</b><br>
|
||||
Start Menu → Settings → Search for "Turn Windows features on or off".<br>
|
||||
From that menu, check the box next to "Windows Subsystem for Linux"<br>
|
||||
Also, check the box next to "Virtual Machine Platform" and<br>
|
||||
check the box next to "Windows Hypervisor Platform".
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
You'll need to reboot your computer now.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
<b>Go to the Microsoft Store</b>, <a href="https://aka.ms/wslstore">https://aka.ms/wslstore</a>,
|
||||
<br>
|
||||
Click "Open" to launch the store.<br>
|
||||
Choose the Ubuntu distribution, and press "Get" and "Install" to download.
|
||||
</p>
|
||||
|
||||
|
||||
<em>If you run into problems on this step, perhaps with errors about needing to update a kernel, you can try these steps manually:</em>
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI>Open an <b>Administrator Powershell</b> and type these commands:</li>
|
||||
<pre>
|
||||
wsl --shutdown
|
||||
wsl --set-default-version 2
|
||||
wsl --update
|
||||
wsl --shutdown
|
||||
wsl --install -d Ubuntu
|
||||
</pre>
|
||||
</ul>
|
||||
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
After the download is finished, press "Launch" (or "Open").<br>
|
||||
This will <b>Open the WSL/Ubuntu terminal and Install Ubuntu on Windows</b>.<br>
|
||||
You will be asked to choose a username & password.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
You will probably want to <b>"Pin" Ubuntu to your Start menu</b>.<br>
|
||||
You can do this by searching for "Ubuntu" in your start menu,
|
||||
and then right clicking on the icon.
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
<b>Install Ubuntu updates</b><br>
|
||||
Type these commands into your WSL terminal:</p>
|
||||
|
||||
<pre>
|
||||
sudo apt update
|
||||
sudo apt dist-upgrade
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
And press 'y' to continue.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
During the installation process, you may be asked for permission to
|
||||
restart services on future upgrades without asking. It should be safe to say "yes".
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
<b>Install the necessary packages for this course:</b>
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
sudo apt install g++ clang gdb lldb zip valgrind
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
And press 'y' to continue.
|
||||
</p>
|
||||
|
||||
<!--
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
<b>Ensure that we can properly terminate a runaway WSL program:</b><br>
|
||||
(In case Ctrl-c does not work for you.)
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
<em>NOTE: Do not attempt to edit WSL system files from Windows. The
|
||||
permissions and filesystem will get messed up and you'll need to
|
||||
reinstall everything to recover.</em>
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
From the WSL terminal (using <tt>vi</tt> to edit the file):
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
vi ~/.bashrc
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
Press 'G' to go to the end of file. Press 'A' to append to the end of the line.<br>
|
||||
Press enter twice. Then type:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
stty intr \
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
Then Ctrl-v, Ctrl-k. And the last line of the file should now look like this:
|
||||
|
||||
<pre>
|
||||
stty intr \^K
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
Then press escape, then press ':wq' and enter to save the file.<br>
|
||||
To have the new command take effect, run:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
source ~/.bashrc
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
Now if you want to quit a running program, press Ctrl-k.<br>
|
||||
(Ctrl-c might work for you too.)
|
||||
</p>
|
||||
-->
|
||||
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
<b>Install Dr. Memory for WSL:</b><br>
|
||||
|
||||
<a href="memory_debugging.php">Follow these instructions...</a>
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P><b>Install a good code editor on Windows.</b>
|
||||
<br>If you don't already have a favorite, we recomend
|
||||
<a href="https://www.sublimetext.com/">Sublime Text</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P><b>Create a new directory for your work for this course on Windows.</b><br>
|
||||
Save the sample files to this directory.</p>
|
||||
|
||||
<ul class=DS_UL>
|
||||
<li class=DS_LI><a href="lectures/temperature.cpp">temperature.cpp</a>
|
||||
<li class=DS_LI><a href="lectures/infinite_loop.cpp">infinite_loop.cpp</a>
|
||||
<li class=DS_LI><a href="lectures/memory_bugs.cpp">memory_bugs.cpp</a>
|
||||
</ul>
|
||||
|
||||
<p class=DS_P>
|
||||
<em>NOTE: It's easier if you avoid spaces or other non-alphanumeric
|
||||
characters (underscore is fine) in your file & directory
|
||||
names.</em>
|
||||
</p>
|
||||
|
||||
<li class=DS_LI>
|
||||
In your WSL terminal, <b>go to your directory for the
|
||||
course</b>.<br> Windows paths are available in WSL from
|
||||
the <tt>/mnt/</tt> mount point.<br>
|
||||
For example, if you saved the file
|
||||
here:<br>
|
||||
<tt>C:\Users\myusername\Documents\DataStructures\temperature.cpp</tt><br>
|
||||
|
||||
<pre>
|
||||
cd /mnt/c/Users/myusername/Documents/DataStructures/
|
||||
|
||||
ls
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
And you should see your file.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
<em>NOTE: If you have spaces in your directory or file names, you'll need
|
||||
to escape them with a backslash. E.g., <tt>Data\ Structures</tt>.</em>
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
Now compile the file:
|
||||
</p>
|
||||
|
||||
|
||||
<pre>
|
||||
clang++ -g -o temperature.out temperature.cpp
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
And then run it:
|
||||
</p>
|
||||
|
||||
|
||||
<pre>
|
||||
./temperature.out
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
|
||||
<p class=DS_P>
|
||||
Or to test it through the memory debugger:
|
||||
</p>
|
||||
|
||||
|
||||
<pre>
|
||||
drmemory -- ./temperature.out
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
Or:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
valgrind ./temperature.out
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
<b>OPTIONAL:</b>
|
||||
<b>To disable the tab-complete bell in WSL terminal</b> (it quickly gets annoying):
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
<em>CAUTION: Some students have reported problems with specific keys on their keyboard no longer working after attempting to follow these instructions. If this happens to you, you may need to un-install and re-install WSL.</em></p>
|
||||
|
||||
<p class=DS_P>
|
||||
<em>NOTE: Do not attempt to edit WSL system files from Windows. The
|
||||
permissions and filesystem will get messed up and you'll need to
|
||||
reinstall everything to recover.</em>
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
From the WSL terminal (using <tt>vi</tt> to edit the file):
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
sudo vi /etc/inputrc
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
Scroll down to the line:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
# set bell-style none
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
press 'x' twice to uncomment that line:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
set bell-style none
|
||||
</pre>
|
||||
</br>
|
||||
|
||||
<p class=DS_P>
|
||||
press ':wq' and enter to save the file.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
You'll need to close and restart your WSL terminal for it to take effect.
|
||||
</p>
|
||||
|
||||
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
<b>OPTIONAL:</b>
|
||||
<b>You may want to disable Ctrl Key Shortcuts</b> (personal preference):<br>
|
||||
With an Ubuntu terminal open, left-click the Ubuntu icon in the upper left, <br>
|
||||
chose Properties, and make sure "Enable Ctrl key Shortcuts" is unchecked. <br>
|
||||
If you leave the box checked then Ctrl+D will not send EOF signals. <br>
|
||||
It's not critical for this course, but this change might be useful in a Python <br>
|
||||
command line interface (CLI). Note: the checkbox does NOT affect Ctrl+C or Ctrl+Z.
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
<li class=DS_LI><p class=DS_P>
|
||||
<b>OPTIONAL:</b>
|
||||
<b>Configure WSL to start in your home directory or Data Structures directory</b>.<br>
|
||||
From your WSL terminal, type:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
echo 'cd /mnt/c/Users/myusername/Documents/DataStructures/' >> ~/.bashrc
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<p class=DS_P>
|
||||
Replacing <tt>/mnt/c/Users/myusername/Documents/DataStructures/</tt> with the
|
||||
starting directory of your choice on your system.
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
<em>NOTE: Do not attempt to edit WSL system files from Windows. The
|
||||
permissions and filesystem will get messed up and you'll need to
|
||||
reinstall everything to recover.</em>
|
||||
</p>
|
||||
|
||||
<p class=DS_P>
|
||||
The next time you close and restart your WSL terminal, it will start in the directory you specified above.
|
||||
</p>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
<li class=DS_LI>
|
||||
<p class=DS_P>
|
||||
<b>Now, <a href="installation_test.php">Test Your Installation</a>.
|
||||
</b>
|
||||
</p>
|
||||
|
||||
|
||||
</ol>
|
||||
|
||||
<?php include 'template_after.php'; ?>
|
||||
Reference in New Issue
Block a user