20226
Comment:
|
27234
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
#acl Claudius Korzen:read,write Patrick Brosi:read,write Axel Lehmann:read,write Björn Buchhold:read,write Niklas Schnelle:read,write Markus Näther:read,write All:read Bachelor's and Master's Projects and Theses at the Chair for Algorithms and Data Structures. ''Note: This is a new page, created on 07-02-2017. The old page, which was outdated and in a terrible format, can still be found [[BachelorAndMasterProjectsAndThesesOld|here]].'' |
#acl Claudius Korzen:read,write Patrick Brosi:read,write Axel Lehmann:read,write Natalie Prange:read,write All:read This page describes how Bachelor's and Master's Projects and Theses work at the Chair for Algorithms and Data Structures. A list of available, ongoing and completed projects and theses can be found [[ListOfProjectAndThesisTopics|here]]. {{{#!html <!-- # ''Note: This is a new page, created on 07-02-2017. The old page, which was outdated and in a terrible format, can still be found [[BachelorAndMasterProjectsAndThesesOld|here]].'' --> }}} |
Line 10: | Line 15: |
1. Acknowledge that you have carefully read this whole page (not just the first section). 2. Which courses have you already taken with us. 3. A very short description of your interests and your strengths (concerning work on a project/thesis). 4. A transcript of the grades of the courses you have take so far. |
1. An acknowledgement that you have carefully read this whole page and the pages linked from it. 2. A list of the courses you have already taken with us. 3. A transcript of the grades of the courses you have taken so far. 4. A very short description of your interests and your strengths (concerning work on a project/thesis). |
Line 16: | Line 21: |
== Thesis with supervision from an external company == If you want to do your thesis with a company, please provide the following '''additional''' (to the list above) information in a '''concise''' format (one understandable and informative paragraph for each of the items below): |
'''If you want to do your thesis with a company or another department''', please provide the following *additional* information in a concise format. Concise means that you should not write more than a paragraph for each of the items below and that your text should be concrete and understandable for a non-expert. The purpose of this information is so that we can check whether the planned work has sufficient scientific merit with respect to the field of computer science. |
Line 20: | Line 24: |
a. How does your approach and the expected result differ from the state of the art? See the section on "Related Work" in our [[ThesesGuidelines|guidelines]]. a. How do you plan to evaluate your work. See the sections on "Theoretical Analysis" and "Empirical Analysis" in our [[ThesesGuidelines|guidelines]]. a. Supervision must be provided by the company and the supervisor should provide an evaluation report at the end of the thesis, in a format to be discussed with us. = Deliverables of a project or thesis = '''B.Sc. and M.Sc. projects:''' (1) a project website (the pages should be in a subfolder ''www'' in your folder in our SVN, and they should not require any special installation, but work just by copying them somewhere ); (2) a well-documented version of your code and data, which allow reproducibility of your results, in our SVN. See the list at the end of this page for many examples (of project websites). '''B.Sc. and M.Sc. thesis:''' (1) written thesis; (2) oral presentation (20 minutes + questions, Room 028, 2nd Floor, Building 51, you should be there 15 minutes earlier for setup and testing); (3) well-documented version of your code and data, which allow reproducibility of your results, in our SVN. Here are some [[ThesesGuidelines|guidelines on how to write a good thesis]]. See the list at the end of this page for many examples (of submitted theses and the accompanying presentation). For both thesis and projects, your codebase and data '''must''' fulfill the following requirements (please read carefully and check twice before you submit your thesis): '''Instructions on how to install and run your code.''' The standard is that you provide a ''Dockerfile'' together with your code, and the Docker image can be build with ''docker build'' and run with ''docker run'' (you should specify how exactly in your README file). If you want to deviate from this standard, you must discuss this with your supervisor early on in your project / thesis work. You can test your ''Dockerfile'' on our machine ''tapoa'' as described [[https://github.com/ad-freiburg/wharfer|in this document (Section "Using wharfer")]]. If you don't have access to ''tapoa'', write an email to [[https://ad.informatik.uni-freiburg.de/staff/dal-ri|Frank Dal-Ri]] with Cc to your supervisor. '''A README file in the top-level directory.''' This README file should provide an overview over everything that's in the repository, so that anyone looking at your repository can quickly find they are looking for. In particular: where do I find the installation instructions, where do I find the data, where do I find the thesis and the presentation, how do I run the experiments. '''A README file in each other directory.''' Each subfolder (and subsubfolder, etc) should contain a README file that explains how the folder is organized. If there are files in the folder (and not just other subfolders), you should explain which kind of information is in those files and what the format of those files is. Also make intelligent use of suffixes. For example, a file with tab-separated values should have the suffix ''.tsv'', a pure text file should have the suffix ''.txt'' and so on. Also pay attention to consistent names: don't call your files ''one_file'', ''fileTwo'', ''Third file'', ''file_4'' (you get the idea). '''Instructions on how to reproduce your experiments.''' '''List of data files which are not part of the code base.''' Many projects / theses involve data that is too big to upload in our SVN. You should explain precisely, how this data can be obtained, and where on our file system you have stored in (typically somwhere under ''/nfs/raid3/<username>'' ... don't forget the README files in those folders, too). |
a. How does your approach and the expected result differ from the state of the art? See the section on "Related Work" in our [[WritingGuidelines|guidelines]]. a. How do you plan to evaluate your work. See the sections on "Theoretical Analysis" and "Empirical Analysis" in our [[WritingGuidelines|guidelines]]. a. Supervision must be provided by the company or the other department and the supervisor should provide an evaluation report at the end of the thesis, in a format to be discussed with us. = Deliverables of a Bachelor's or Master's PROJECT = 1. Fulfill the reproducibility requirements described in the next section 2. Create a project website:<<BR>> 2.1 The pages should be in a subfolder ''www'' in your folder in our SVN<<BR>> 2.2 There should be a single MD file in blog post format in ''www/content/post''<<BR>> 2.3 Any images or other files included in the MD file should be in ''www/static''<<BR>> 2.4 Note that this does not exclude interactive elements (e.g. via !JavaScript)<<BR>> 2.5 You can test the final appearance of the website as [[https://github.com/ad-freiburg/ad-blog|described here]]<<BR>> 2.6 You can look at [[http://ad-blog.informatik.uni-freiburg.de/|websites of previous projects]] in this format<<BR>> 2.7 Here is a long list of [[https://ad.informatik.uni-freiburg.de/publikationen/bachelor_master_projekte|previous projects]] in a format predating the MD format<<BR>> 3. There is usually no presentation needed for a project = Deliverables of a Bachelor's or Master's THESIS = 1. Fulfill the reproducibility requirements described in the next section 2. A written thesis<<BR>> 2.1 Upload a PDF of the thesis to our SVN, in a separate subfolder ''thesis''<<BR>> 2.2 In that same subfolder, also provide all the sources (tex files, bib files, figures, etc.)<<BR>> 2.3 Check our [[http://ad-wiki.informatik.uni-freiburg.de/teaching/WritingGuidelines|Guidelines for how to write a proper thesis]]<<BR>> 2.4 Here is a long list of [[https://ad.informatik.uni-freiburg.de/publikationen/bachelor_master_arbeiten|example theses]] which have already been completed at our chair 3. An oral presentation<<BR>> 3.1 The oral presentation takes place after you have officially submitted your thesis<<BR>> 3.2 Upload a PDF of the slides to our SVN, in a separate subfolder ''presentation''<<BR>> 3.3 In that same subfolder, also provide all the sources (if you use tex: like for the thesis, or the PPTX file)<<BR>> 3.4 The maximal duration of the presentation is 20 minutes<<BR>> 3.5 There is ample time for questions afterwards<<BR>> 3.6 The presentations take place in Building 51, 2nd Floor, Room 024 (our "Küche")<<BR>> 3.7 You should be there 15 minutes earlier for setup and testing 4. There is no need for a website for a thesis = Reproducibility = For both projects and theses, '''your results must be easily reproducible'''. We have very specific requirements for this. They are explained in detail on our [[Reproducibility]] page, together with a simple working example. Note the word "easily" in the previous paragraph. It is important that we can reproduce your results not just in principle, but easily. That is, there should be no need for lengthy explanations or expert knowledge, but once the software runs, everything should be "self-explanatory". From our perspective this should look like this: 1. We build the docker image (the comments at the end of the Dockerfile should say how)<<BR>> 2. We start a docker container (the comments at the end of the Dockerfile should say how)<<BR>> 3. There is information on the console on how to proceed further<<BR>> 4. Whatever components you provide from here on, they should be self-explanatory Concerning Item 3, this will look different depending on your type of work. If your docker container starts a web service, there should at least be output on the console which provides the URL of the service. Further explanations on the service can then be provided on the web page. If your docker container starts an interactive shell, there should at least be instructions on how to proceed further. In the simplest case, this can be a message ''Type make all to get help on the available options of how to proceed further''. Always keep in mind what is the point of all this. The point is that someone else, who is maybe not familiar with all or any of the details of your work, can see and reproduce what you have done easily, without assistance from you. And not just now, but also in six months or in a year or in five years. Also note that that "someone else" might be you in the future. It is amazing how quickly one forgets about ones own work, and you will be pleasantly surprised if you find that you can still run and understand everything months or years later. = The first meeting = In the first meeting with the supervisor, create a Google Doc where you copy and fill out the following template. The Google Doc must be named ''Firstname Lastname (<type of work>)'', where type of work is one of: Bachelorprojekt, Masterprojekt, Bachelorarbeit, Masterarbeit, Bachelorprojekt + Bachelorarbeit, Masterprojekt + Masterarbeit. The Google Doc should be shared with at least the following people: Student, Supervisor(s), Hannah Bast ( bast.hannah@gmail.com ), Frank Dal-Ri ( nirlad@gmail.com , our system administrator), Heike Hägle ( hhaegle@gmail.com , our secretary). The document should contain a section for each meeting. As a minimum, each section header should contain the number of the meeting and the date and the time. The sections should be ordered in reverse chronologial order, that is, with the most recent meeting at the TOP. The section of the first meeting should contain at least the following information: {{{ Short working title: [this may change later] Uni-Account: [initials + number] Informatik-Account: [usually first seven letters of last name + the initial of first name] Primary e-mail adress: SVN: [subdirectory in student-projects or student-theses, named firstname-lastname] Special RAM requirements: Special Disk space requirements: Actual beginning of work: Planned end of work: Goal of the thesis: [succinct description in one paragraph] First step: [see text below] Deadline for the first step: }}} The first step should be something, where the whole problem is solved from beginning to end, but with a relatively simple approach (how simple is up to you). The more aspects are touched (even if just in a simplistic way) in this first step, the better. The resulting code should follow our [[Reproducibility|reproducibility guidelines]], just like for the final submission. This first step is usually considerable work, but not very hard technically. It will give you a very good feeling for the challenges involved. Having completed this first steps, it usually becomes very clear (from the shortcomings of the simple approach) what the next steps should be. We urge you to start your work right after the first meeting and we will be very unhappy if you don't. If you are not quite finished by the deadline, just drop us a line and ask for an extension. But never come to a follow-up meeting unprepared or with half-finished code, see the next section. = Follow-up meetings = It is very important that you come well-prepared to all follow-up meetings. In particular: '''You must have working code and data ready''' that follows our [[Reproducibility|reproducibility guidelines]], just like for the final submission. In particular, all the relevant data should be there, either under ''/local'' or under ''/nfs/students''. We should have the opportunity to try out your code before the meeting, so please send it early enough. '''Time-consuming precomputation should be done before the meeting'''. Many projects or theses involve some sort of preprocessing of (often large amounts of) data. For the intermediate meetings, we usually don't want to reproduce your precomputation, but we want to be able to reproduce whatever it is that can be done with the results of your precomputation. Store the results of your precomputation in your folder under ''/nfs/students'' or (if network latency is an issue) under ''/local/data''. The docker container should then mount this data via the ''-v'' option. '''Don't expect us to lead the meeting''', it is your project / thesis and you should be the driving force. If you have specific problems or questions, you should prepare something (ideally in the form of code or a demo or an example), so that we can quickly understand what the problem is. It's usually not efficient if you start by telling us about all the details of the current status quo. '''Always bring your laptop''', in case there is uncommitted code or data. It will also allow you to make small fixes right in the meeting. = Forum for asking questions = We have a dedicated forum for asking questions related to the technical aspects of our project or thesis: https://daphne.informatik.uni-freiburg.de/forum/viewforum.php?f=1082 It's similar to the forums we have for our courses. The forum is organized into several subforums, including: Programming, Docker, Datasets, Writing and Presenting, Miscellaneous. All members from the Algorithms and Data Structures group are subscribed and will be happy to help whenever they can. Please write us an email if you have asked a question on the forum and haven't received an answer for several days. Other students (including you) can also subscribe to the forum and they are very welcome to answer questions, too. Like in our courses, many questions are relevant and interesting for other students, too. In principle, feel free to ask any question on the forum. But for questions strongly related to your project and which probably only your supervisor can answer, better ask your supervisor directly. |
Line 51: | Line 144: |
a. Are the installation instructions easy to understand a. Can we run your code and reproduce your results |
a. Does the Docker setup work (this is actually a hard requirement) a. How easily can we reproduce your work and your results |
Line 60: | Line 153: |
1. Quality of the write-up. This includes the aspects described in our [[ThesesGuidelines|guidelines for writing a thesis]] = Available and ongoing projects and theses = |
1. Quality of the write-up. This includes the aspects described in our [[WritingGuidelines|guidelines for writing a thesis]] = List of available and ongoing projects and theses = A list of available, ongoing and completed projects and theses can be found [[ListOfProjectAndThesisTopics|here]]. {{{#!html <!-- # |
Line 67: | Line 166: |
{{attachment:ongoing.png|Ongoing|align="top"}} [[BachelorAndMasterProjectsAndTheses/FrequencyMap|Generating Regular-Interval Maps from Public Transit Data (project or thesis, ongoing)]]: We are looking for well-structured input data for our [[http://panarea.informatik.uni-freiburg.de/gtfs-lines/|transit-map drawing algorithm]]. The goal of this topic is to provide the transit-mapper with a graph from which it can render regular-intervall timetable maps ("Taktfahrplankarten") like [[http://www.sma-partner.com/images/Downloads/NGCH-2015.pdf|this]]. You should be a fan of huge datasets, timetable data and of course graphs (but who isn't). As a bachelor or master project with the possibility of continuation as a thesis. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/brosi|Patrick Brosi]]. {{attachment:ongoing.png|Ongoing|align="top"}} [[BachelorAndMasterProjectsAndTheses/GtfsMerger|Merging Overlapping GTFS Feeds (Bachelor project or thesis, ongoing)]]: Many transportation companies publish their timetable data either directly as GTFS feeds or in formats that can be converted to GTFS. As soon as you have two GTFS feeds (two sets of timetable data) that cover either the same or adjacent areas, the problem of duplicate trips arises. You should develop a tool that merges two or more GTFS feeds and solves duplication / fragmentation issues. As a bachelor project or thesis. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/brosi|Patrick Brosi]]. {{attachment:ongoing.png|Ongoing|align="top"}} [[BachelorAndMasterProjectsAndTheses/GtfsBrowser|GTFS Browser Web App (Bachelor project or thesis)]]: Develop a web-application that can be used to analyze huge GTFS datasets. There are already some tools available (for example, [[https://github.com/google/transitfeed/wiki/ScheduleViewer|ScheduleViewer]]) but they all feel and look quite clumsy, are incredible slow and cannot handle large datasets. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/brosi|Patrick Brosi]]. {{attachment:ongoing.png|Ongoing|align="top"}} [[BachelorAndMasterProjectsAndTheses/DehyphenationAndGuessingLigatures|Merging Hyphenated Words & Guessing Ligatures (Master thesis, ongoing)]]: PDF is a layout-based format: it specifies the positions and fonts of the individual characters, of which the text is composed, but usually does not provide any information about words, paragraphs and sections. You should write code, that (1) merges hyphenated words with respect to ''compound words'' and (2) "guesses" characters (e.g., ligatures) that can't be identified as textual content. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/korzen|Claudius Korzen]]. |
{{attachment:ongoing.png|Ongoing|align="top"}} [[BachelorAndMasterProjectsAndTheses/GtfsMerger|Merging Overlapping GTFS Feeds (Bachelor project or thesis)]]: Many transportation companies publish their timetable data either directly as GTFS feeds or in formats that can be converted to GTFS. As soon as you have two GTFS feeds (two sets of timetable data) that cover either the same or adjacent areas, the problem of duplicate trips arises. You should develop a tool that merges two or more GTFS feeds and solves duplication / fragmentation issues. As a bachelor project or thesis. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/brosi|Patrick Brosi]]. |
Line 79: | Line 172: |
{{attachment:available.png|Available|align="top"}} [[BachelorAndMasterProjectsAndTheses/SparqlTextUI|Combined SPARQL+Text search (project or thesis)]]: This is well-suited as a project (B.Sc. or M.Sc.) but also provides ample opportunity for continuation with a theses (B.Sc. or M.Sc). You should be fond of good user interfaces and have a good taste concerning layout and colors and such things. You should also like knowledge bases and big datasets and searching in them. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/bast|Hannah Bast]]. | {{attachment:ongoing.png|Available|align="top"}} [[BachelorAndMasterProjectsAndTheses/SparqlTextUI|Combined SPARQL+Text search (project or thesis)]]: This is well-suited as a project (B.Sc. or M.Sc.) but also provides ample opportunity for continuation with a theses (B.Sc. or M.Sc). You should be fond of good user interfaces and have a good taste concerning layout and colors and such things. You should also like knowledge bases and big datasets and searching in them. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/bast|Hannah Bast]]. |
Line 85: | Line 178: |
{{attachment:ongoing.png|Available|align="top"}} [[BachelorAndMasterProjectsAndTheses/OsmSearch|A Search Engine for OpenStreetMap Data (project and/or thesis)]]: | {{attachment:ongoing.png|Ongoing|align="top"}} [[BachelorAndMasterProjectsAndTheses/OsmSearch|A Search Engine for OpenStreetMap Data (project and/or thesis)]]: |
Line 92: | Line 185: |
{{attachment:available.png|Available|align="top"}} [[BachelorAndMasterProjectsAndTheses/ConversationalAqqu|Conversational Aqqu (project and/or thesis)]]: In this project you will be working on an extension to our Question Answering system Aqqu. This extension will enable follow-up questions and thus a more natural interface. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/schnelle|Niklas Schnelle]]. | {{attachment:ongoing.png|Available|align="top"}} [[BachelorAndMasterProjectsAndTheses/ConversationalAqqu|Conversational Aqqu (project and/or thesis)]]: In this project you will be working on an extension to our Question Answering system Aqqu. This extension will enable follow-up questions and thus a more natural interface. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/schnelle|Niklas Schnelle]]. |
Line 100: | Line 193: |
{{attachment:available.png|Available|align="top"}} [[http://ad-wiki.informatik.uni-freiburg.de/teaching/BachelorAndMasterProjectsAndTheses/ScientistFinder|Crawling and Analysis of Scientist Homepages]]: Design and build a system that crawls as many homepages of scientists as possible and creates a neat knowledge base from this information (Name of Scientist, Affiliation, Gender, Title). In previous work, we tried extracting this information from the CommonCrawl archive, but that turned out to be much too incomplete and unreliable. This is a challenging problem with large practical value. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/bast|Hannah Bast]]. | {{attachment:ongoing.png|Available|align="top"}} [[http://ad-wiki.informatik.uni-freiburg.de/teaching/BachelorAndMasterProjectsAndTheses/ScientistFinder|Crawling and Analysis of Scientist Homepages]]: Design and build a system that crawls as many university pages and finds as many person mentions as possible and creates a neat knowledge base from this information (Name of Scientist, Affiliation, Gender, Title). In previous work, we tried extracting this information from the CommonCrawl archive, but that turned out to be much too incomplete and unreliable. This is a challenging problem with large practical value. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/schnelle|Niklas Schnelle]]. |
Line 104: | Line 197: |
{{attachment:available.png|Available|align="top"}} [[http://ad-wiki.informatik.uni-freiburg.de/teaching/BachelorAndMasterProjectsAndTheses/ClueWebEntityRecognition|Entity Recognition on a Web Corpus]] Design and implement a named-entity recognizer for a web-size corpus]]. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/bast|Hannah Bast]]. = Instructions for students and supervisors = == First meeting == In the first meeting with the supervisor, create a Google Doc where you copy and fill out the following template. The Google Doc must be named ''Firstname Lastname'' and it should be shared with at least the following people: Student, Supervisor(s), Hannah Bast ( bast.hannah@gmail.com ), Frank Dal-Ri ( nirlad@gmail.com , our system administrator), Heike Hägle ( hhaegle@gmail.com , our secretary). {{{ Type: [one of: Bachelor Project, Bachelor Thesis, Master Project, Master Thesis] Short working title of project/thesis: [this may change later] RZ Account: [initials + number, e.g. ''es437''] Department Account: [usually the first seven letters of the given name + the initial of the first name, e.g. ''scissore''] Primary e-mail adress: SVN: [subdirectory in student-projects or student-theses, named firstname-lastname, e.g. ''edward-scissorhands'']] Special RAM requirements: Special Disk space requirements: Actual beginning of work: Planned end of work: Goal: Subgoals: First steps: Deadline for first steps: }}} The first steps should be something relative fail-safe which can just "be done". If the first steps are not even remotely finished by the agreed-upon deadline, we might not want to supervise you further. Supervision is a considerable effort for us and we care a lot about it. In particular, we spent a lot of thought and effort on formulating interesting topics (and goals, and subgoals, and first steps) which are interesting and relevant and related to our actual research. We care about the results of these projects/theses, so you should also care working on them. == Follow-up meetings == It usually makes sense to have a few follow-up / progress meetings over the course of the projects. They usually take place, after certain milestones have been reached. Students should come well-prepared to these meetings. Here is a checklist: 1. Concise(!!) list of what has been done in the Google Doc (at the top) 1. Concise list of questions, if you have any 1. Code written so far should be in the SVN, not (only) on your local computer 1. All relevant files should be on our file system, not (only) on your local computer 1. A working demo of whatever you have done so far 1. The demo should run on our servers, not just locally on your computer 1. Bring your laptop (just in case there is uncommitted stuff) |
{{attachment:available.png|Available|align="top"}} [[http://ad-wiki.informatik.uni-freiburg.de/teaching/BachelorAndMasterProjectsAndTheses/ClueWebEntityRecognition|Entity Recognition on a Web Corpus]] Design and implement a named-entity recognizer for a web-size corpus. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/bast|Hannah Bast]]. {{attachment:available.png|Available|align="top"}} [[http://ad-wiki.informatik.uni-freiburg.de/teaching/BachelorAndMasterProjectsAndTheses/ClueWebContextDecomposition|Context Decomposition of a Web Corpus]] Decompose the sentences of a given web-size corpus into their semantic components, using fancy technology developed in our group. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/bast|Hannah Bast]]. {{attachment:ongoing.png|Ongoing|align="top"}} [[http://ad-wiki.informatik.uni-freiburg.de/teaching/BachelorAndMasterProjectsAndTheses/RiverMap|River Maps]] The goal of this project is to use our tool [[http://loom.cs.uni-freiburg.de|LOOM]] to render maps of rivers from OSM data. Each river segment should consist of all rivers that contributed to this river so far (for example, beginning at Mannheim, the Neckar should be part of the segment that makes up the Rhine). Think of a single river as a single subway line starting at the source of that river, and the Rhine, for example, as dozens of small subway lines next to each other. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/brosi|Patrick Brosi]]. {{attachment:available.png|Available|align="top"}} [[http://ad-wiki.informatik.uni-freiburg.de/teaching/BachelorAndMasterProjectsAndTheses/MailSearch|Mail Search]] The goal of this project is a fast and efficient search in very large mail archives. The subtasks are: (1) Write an efficient parser that reads one or files in MBOX format and produces a CSV file with one line per mail and columns for the various structured and unstructured parts of an email (from, to, subject, date, body, ...); (2) take proper care of encoding issues, which are a major issue when dealing with a large number of emails; (3) setup an instance of !CompleteSearch for the data from the CSV file; (4) provide a simple and effective search unterface using the instance from 3 as a backend. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/bast|Hannah Bast]]. {{attachment:ongoing.png|Ongoing|align="top"}}[[https://ad-wiki.informatik.uni-freiburg.de/teaching/BachelorAndMasterProjectsAndTheses/WordExtraction|Extracting Words from Text Documents with Complex Layouts (bachelor thesis)]] Design and implement a (learning-based) system for extracting words from layout-based text documents (e.g., PDF documents), which is a surprisingly difficult (but not super-hard) task. The reason is that the text is typically only provided character-wise (and not word-wise) so that word boundaries must be derived from e.g., analyzing the spacings between the characters. Another challenge is that the layout of a text document can be arbitrarily complex, with text arranged in multiple columns and different alignments so that special care is required to not mix up text from different columns. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/korzen|Claudius Korzen]]. {{attachment:ongoing.png|Ongoing|align="top"}}[[https://ad-wiki.informatik.uni-freiburg.de/teaching/BachelorAndMasterProjectsAndTheses/SpecialCharactersExtraction|Extracting Special Characters from Layout-Based Text Documents (bachelor thesis)]] Design and implement a (learning-based) system for extracting ''ligatures'' (like fi or ffi) and ''characters with diacritics'' (like á and è) from layout-based text documents (e.g., PDF documents). The challenge here is that such characters can be ''drawn'' into the text, in which case they need to be recognized by analyzing their shapes. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/korzen|Claudius Korzen]]. {{attachment:ongoing.png|Ongoing|align="top"}}[[https://ad-wiki.informatik.uni-freiburg.de/teaching/BachelorAndMasterProjectsAndTheses/MergingHyphenatedWords|Merging Hyphenated Words in Layout-Based Text Documents (project)]] Design and implement a (learning-based) system for merging hyphenated words in layout-based text documents (e.g., PDF documents). The challenge here is to decide, whether or not the hyphen between the two parts of a hyphenated word needs to be retained (because of a compound word) after merging the parts. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/korzen|Claudius Korzen]]. {{attachment:available.png|Available|align="top"}} [[BachelorAndMasterProjectsAndTheses/GtfsBrowser|GTFS Browser Web App (Bachelor project or thesis)]]: Develop a web-application that can be used to analyze huge GTFS datasets. There are already some tools available (for example, [[https://github.com/google/transitfeed/wiki/ScheduleViewer|ScheduleViewer]]) but they all feel and look quite clumsy, are incredible slow and cannot handle large datasets. Supervised by [[https://ad.informatik.uni-freiburg.de/staff/brosi|Patrick Brosi]]. --> }}} {{{#!html <!-- |
Line 146: | Line 220: |
--> }}} |
This page describes how Bachelor's and Master's Projects and Theses work at the Chair for Algorithms and Data Structures.
A list of available, ongoing and completed projects and theses can be found here.
Contents
Application for a project or thesis
If you are interested in doing a project or theses with us, please carefully read this page first and then send an e-mail to the prospective supervisor with the following information:
- An acknowledgement that you have carefully read this whole page and the pages linked from it.
- A list of the courses you have already taken with us.
- A transcript of the grades of the courses you have taken so far.
- A very short description of your interests and your strengths (concerning work on a project/thesis).
- If you have an own project in mind (not necessary): a very short description of the goal and the scientific merit.
If you want to do your thesis with a company or another department, please provide the following *additional* information in a concise format. Concise means that you should not write more than a paragraph for each of the items below and that your text should be concrete and understandable for a non-expert. The purpose of this information is so that we can check whether the planned work has sufficient scientific merit with respect to the field of computer science.
- What is the expected / aimed at outcome?
How does your approach and the expected result differ from the state of the art? See the section on "Related Work" in our guidelines.
How do you plan to evaluate your work. See the sections on "Theoretical Analysis" and "Empirical Analysis" in our guidelines.
- Supervision must be provided by the company or the other department and the supervisor should provide an evaluation report at the end of the thesis, in a format to be discussed with us.
Deliverables of a Bachelor's or Master's PROJECT
1. Fulfill the reproducibility requirements described in the next section
2. Create a project website:
2.1 The pages should be in a subfolder www in your folder in our SVN
2.2 There should be a single MD file in blog post format in www/content/post
2.3 Any images or other files included in the MD file should be in www/static
2.4 Note that this does not exclude interactive elements (e.g. via JavaScript)
2.5 You can test the final appearance of the website as described here
2.6 You can look at websites of previous projects in this format
2.7 Here is a long list of previous projects in a format predating the MD format
3. There is usually no presentation needed for a project
Deliverables of a Bachelor's or Master's THESIS
1. Fulfill the reproducibility requirements described in the next section
2. A written thesis
2.1 Upload a PDF of the thesis to our SVN, in a separate subfolder thesis
2.2 In that same subfolder, also provide all the sources (tex files, bib files, figures, etc.)
2.3 Check our Guidelines for how to write a proper thesis
2.4 Here is a long list of example theses which have already been completed at our chair
3. An oral presentation
3.1 The oral presentation takes place after you have officially submitted your thesis
3.2 Upload a PDF of the slides to our SVN, in a separate subfolder presentation
3.3 In that same subfolder, also provide all the sources (if you use tex: like for the thesis, or the PPTX file)
3.4 The maximal duration of the presentation is 20 minutes
3.5 There is ample time for questions afterwards
3.6 The presentations take place in Building 51, 2nd Floor, Room 024 (our "Küche")
3.7 You should be there 15 minutes earlier for setup and testing
4. There is no need for a website for a thesis
Reproducibility
For both projects and theses, your results must be easily reproducible. We have very specific requirements for this. They are explained in detail on our Reproducibility page, together with a simple working example.
Note the word "easily" in the previous paragraph. It is important that we can reproduce your results not just in principle, but easily. That is, there should be no need for lengthy explanations or expert knowledge, but once the software runs, everything should be "self-explanatory". From our perspective this should look like this:
1. We build the docker image (the comments at the end of the Dockerfile should say how)
2. We start a docker container (the comments at the end of the Dockerfile should say how)
3. There is information on the console on how to proceed further
4. Whatever components you provide from here on, they should be self-explanatory
Concerning Item 3, this will look different depending on your type of work. If your docker container starts a web service, there should at least be output on the console which provides the URL of the service. Further explanations on the service can then be provided on the web page. If your docker container starts an interactive shell, there should at least be instructions on how to proceed further. In the simplest case, this can be a message Type make all to get help on the available options of how to proceed further.
Always keep in mind what is the point of all this. The point is that someone else, who is maybe not familiar with all or any of the details of your work, can see and reproduce what you have done easily, without assistance from you. And not just now, but also in six months or in a year or in five years. Also note that that "someone else" might be you in the future. It is amazing how quickly one forgets about ones own work, and you will be pleasantly surprised if you find that you can still run and understand everything months or years later.
The first meeting
In the first meeting with the supervisor, create a Google Doc where you copy and fill out the following template. The Google Doc must be named Firstname Lastname (<type of work>), where type of work is one of: Bachelorprojekt, Masterprojekt, Bachelorarbeit, Masterarbeit, Bachelorprojekt + Bachelorarbeit, Masterprojekt + Masterarbeit. The Google Doc should be shared with at least the following people: Student, Supervisor(s), Hannah Bast ( bast.hannah@gmail.com ), Frank Dal-Ri ( nirlad@gmail.com , our system administrator), Heike Hägle ( hhaegle@gmail.com , our secretary).
The document should contain a section for each meeting. As a minimum, each section header should contain the number of the meeting and the date and the time. The sections should be ordered in reverse chronologial order, that is, with the most recent meeting at the TOP.
The section of the first meeting should contain at least the following information:
Short working title: [this may change later] Uni-Account: [initials + number] Informatik-Account: [usually first seven letters of last name + the initial of first name] Primary e-mail adress: SVN: [subdirectory in student-projects or student-theses, named firstname-lastname] Special RAM requirements: Special Disk space requirements: Actual beginning of work: Planned end of work: Goal of the thesis: [succinct description in one paragraph] First step: [see text below] Deadline for the first step:
The first step should be something, where the whole problem is solved from beginning to end, but with a relatively simple approach (how simple is up to you). The more aspects are touched (even if just in a simplistic way) in this first step, the better. The resulting code should follow our reproducibility guidelines, just like for the final submission.
This first step is usually considerable work, but not very hard technically. It will give you a very good feeling for the challenges involved. Having completed this first steps, it usually becomes very clear (from the shortcomings of the simple approach) what the next steps should be.
We urge you to start your work right after the first meeting and we will be very unhappy if you don't. If you are not quite finished by the deadline, just drop us a line and ask for an extension. But never come to a follow-up meeting unprepared or with half-finished code, see the next section.
Follow-up meetings
It is very important that you come well-prepared to all follow-up meetings. In particular:
You must have working code and data ready that follows our reproducibility guidelines, just like for the final submission. In particular, all the relevant data should be there, either under /local or under /nfs/students. We should have the opportunity to try out your code before the meeting, so please send it early enough.
Time-consuming precomputation should be done before the meeting. Many projects or theses involve some sort of preprocessing of (often large amounts of) data. For the intermediate meetings, we usually don't want to reproduce your precomputation, but we want to be able to reproduce whatever it is that can be done with the results of your precomputation. Store the results of your precomputation in your folder under /nfs/students or (if network latency is an issue) under /local/data. The docker container should then mount this data via the -v option.
Don't expect us to lead the meeting, it is your project / thesis and you should be the driving force. If you have specific problems or questions, you should prepare something (ideally in the form of code or a demo or an example), so that we can quickly understand what the problem is. It's usually not efficient if you start by telling us about all the details of the current status quo.
Always bring your laptop, in case there is uncommitted code or data. It will also allow you to make small fixes right in the meeting.
Forum for asking questions
We have a dedicated forum for asking questions related to the technical aspects of our project or thesis: https://daphne.informatik.uni-freiburg.de/forum/viewforum.php?f=1082
It's similar to the forums we have for our courses. The forum is organized into several subforums, including: Programming, Docker, Datasets, Writing and Presenting, Miscellaneous.
All members from the Algorithms and Data Structures group are subscribed and will be happy to help whenever they can. Please write us an email if you have asked a question on the forum and haven't received an answer for several days. Other students (including you) can also subscribe to the forum and they are very welcome to answer questions, too. Like in our courses, many questions are relevant and interesting for other students, too.
In principle, feel free to ask any question on the forum. But for questions strongly related to your project and which probably only your supervisor can answer, better ask your supervisor directly.
Grading scheme for the theses
Your final grade for the thesis will be an average of four grades, one for each of the following four aspects:
- Quality of the conceptual/theoretical work. This includes aspects such as:
- How well were the ideas thought out / the details worked out
- How independent was the work
- How meaningful and interesting/useful were the results.
- Quality of the implementation work. This includes aspects such as:
- Does the Docker setup work (this is actually a hard requirement)
- How easily can we reproduce your work and your results
- Is the code well documented, did you adhere to a proper coding style, are there unit tests (these are all basic requirements in every course offered by our chair).
- Quality of the evaluation. This includes aspects such as:
- Is the experimental setup well described
- Is the selection of datasets reasonable (there should be at least two, with different characteristics)
- Is there a comparison with a reasonable baseline or competitor method
- Are the results correct
- Are the results properly discussed
Quality of the write-up. This includes the aspects described in our guidelines for writing a thesis
List of available and ongoing projects and theses
A list of available, ongoing and completed projects and theses can be found here.