- Saved searches
- Use saved searches to filter your results more quickly
- cannor147/itmo-java
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- Saved searches
- Use saved searches to filter your results more quickly
- ricnorr/ITMO-JAVA-ADVANCED
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Java Advanced course at ITMO University
cannor147/itmo-java
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Course was prepared and taught by Georgiy Korneev at ITMO University in 2019 (year2017, 4th semester).
Project setting in IntelliJ IDEA
- Open root directory of the repository. Unmark source mark from src directory for main project module if it is.
- Do Import module.. for each directory in src/modules . If you want only one specific module, do Import module.. for:
- module of your choice
- dependent modules from your choice (see point 4)
- module ru.ifmo.rain.bashunov.runner
- Add directories test/artifats and test/lib as Library in your project. Also ass dependencies for each project modules to this libraries.
- Add dependencies between modules:
- ru.ifmo.rain.bashunov.mapper from ru.ifmo.rain.bashunov.concurrent
- Before running the tests, run Build for the whole project. After any change you should do Rebuild for the whole project.
- For running the tests you should use HomeworkRunner from module ru.ifmo.rain.bashunov.runner .
- File crawling (statements (ru), solution)
- running tests for simple modification: HomeworkRunner -run —test info.kgeorgiy.java.advanced.walk —mod Walk —module ru.ifmo.rain.bashunov.walk —class RecursiveWalk
- running tests for advanced modification: HomeworkRunner -run —test info.kgeorgiy.java.advanced.walk —mod RecursiveWalk —module ru.ifmo.rain.bashunov.walk —class RecursiveWalk
- Set on array (statements (ru), solution)
- running tests for simple modification: HomeworkRunner -run —test info.kgeorgiy.java.advanced.arrayset —mod SortedSet —module ru.ifmo.rain.bashunov.arrayset —class ArraySet
- running tests for advanced modification: HomeworkRunner -run —test info.kgeorgiy.java.advanced.arrayset —mod NavigableSet —module ru.ifmo.rain.bashunov.arrayset —class ArraySet
- Students (statements (ru), solution)
- running tests for simple modification: HomeworkRunner -run —test info.kgeorgiy.java.advanced.student —mod StudentQuery —module ru.ifmo.rain.bashunov.student —class StudentQueryImpl
- running tests for advanced modification: HomeworkRunner -run —test info.kgeorgiy.java.advanced.student —mod StudentGroupQuery —module ru.ifmo.rain.bashunov.student —class StudentQueryImpl
- Implementor (statements (ru), solution)
- running tests for simple modification: HomeworkRunner -run —test info.kgeorgiy.java.advanced.implementor —mod interface —module ru.ifmo.rain.bashunov.implementor —class Implementor
- running tests for advanced modification: HomeworkRunner -run —test info.kgeorgiy.java.advanced.implementor —mod class —module ru.ifmo.rain.bashunov.implementor —class Implementor
- Jar Implementor (statements (ru), solution)
- running tests for simple modification: HomeworkRunner -run —test info.kgeorgiy.java.advanced.implementor —mod jar-interface —module ru.ifmo.rain.bashunov.implementor —class Implementor
- running tests for advanced modification: HomeworkRunner -run —test info.kgeorgiy.java.advanced.implementor —mod jar-class —module ru.ifmo.rain.bashunov.implementor —class Implementor
- Javadoc (statements (ru), solution)
- script for creating Javadoc: HomeworkRunner -javadoc —test info.kgeorgiy.java.advanced.implementor —module ru.ifmo.rain.bashunov.implementor —source Implementor
- Iterative parallelism (statements (ru), solution)
- running tests for simple modification: HomeworkRunner -run —test info.kgeorgiy.java.advanced.concurrent —mod scalar —module ru.ifmo.rain.bashunov.concurrent —class IterativeParallelism
- running tests for advanced modification: HomeworkRunner -run —test info.kgeorgiy.java.advanced.concurrent —mod list —module ru.ifmo.rain.bashunov.concurrent —class IterativeParallelism
- Parallel run (statements (ru), solution)
- running tests for simple modification: HomeworkRunner -run —test info.kgeorgiy.java.advanced.mapper —mod scalar —module ru.ifmo.rain.bashunov.concurrent —module ru.ifmo.rain.bashunov.mapper —class ParallelMapperImpl parallelism.MappedParallelism
- running tests for advanced modification: HomeworkRunner -run —test info.kgeorgiy.java.advanced.mapper —mod list —module ru.ifmo.rain.bashunov.concurrent —module ru.ifmo.rain.bashunov.mapper —class ParallelMapperImpl parallelism.MappedParallelism
- Web Crawler (statements (ru), solution draft)
- HelloUDP (statements (ru), solution draft)
- HelloUDP (statements (ru))
- Text statistics (statements (ru))
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
ricnorr/ITMO-JAVA-ADVANCED
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Develop class RecursiveWalk , calculating files hash in specified direcotry recursively.
- Console run format: java RecursiveWalk .
- Input file contains list of directories needed to walk through.
- Output file must contains calculation results for each line of unput line in the following format: , one per line.
- Hash calculation algorithm: FNV.
- In case of any errors, the hash result must be 00000000 .
- Input and output files encoding is UTF-8.
- Parent directory to the output file should be created if it is absent.
- File sizes may exceed RAM size.
2. Collections Framework: ArraySet
Develop class ArraySet , implementing immutable ordered set.
- Class ArraySet must implement NavigableSet interface.
- All methods must be maximally asymptotic effective.
3. Data streams: Students
Develop class StudentDB , processing search queries over students database.
- Class StudentDB must implement both StudentQuery and StudentGroupQuery interfaces.
- Each method must contains exactly one operator.
4. Reflection: Implementor
Develop class Implementor , generating basic class or interface implementation source code.
- Console arguments: qualified interface name to generate implementation of.
- The result of the run must be a generated java code with Impl suffix, extending (implementing) given class (interface).
- It must be possible to compile generated code without errors.
- Generated class cannot be abstract.
- Generated methods must ignore arguments and return default value of appropriate return type.
- Input classes or interfaces do not utilize generics.
5. Jar: Jar Implementor
- Create .jar file including compiled Implementor and all related classes.
- Created archive must be runnable using command java -jar
- All additional command line arguments must be passed to Implementor
- Modify Implementor . With additional argument -jar it must create .jar archive including generated implementation of given class or interface.
6. Javadoc: Implementor Javadoc
- Add comprehensive documentation to solutions of problems 4 and 5 using Javadoc.
- All classes and all methods (including private ones) must be provided with documentation.
- Documentation must be compilable without errors.
- All links to standard library classes must be valid.
7. Basic parallel computing: Iterative parallelism
Develop class IterativeParallelism , processing lists in multiple threads.
- It is required to support following queries:
- minimum(threads, list, comparator) : first occurring minimum.
- maximum(threads, list, comparator) : first occurring maximum.
- all(threads, list, predicate) : check whether all elements satisfy given predicate.
- any(threads, list, predicate) : check whether any element satisfies given predicate.
- filter(threads, list, predicate) : list containing only mathcing given predicate elements.
8. Basic parallel computing: Parallel mapper
- Develop class ParallelMapperImpl , implementing ParallelMapper interface.
- Method run must concurrenlty compute given function on each element of args .
- Method close must terminate all threads.
- Constructor ParallelMapperImpl(int threads) must create threads threads which may be utilized for future computations.
- It is assumed that there may be several clients generating queries to compute.
- All given tasks must be processed in queue.
- There must not be any active standby.
9. Concurrency Utilities: Web Crawler
Develop thread-safe class WebCrawler implementing Crawler interface, recursively visiting web pages.
- The class must have the constructor, accepting the following arguments:
- downloader : Downloader instance to use in order to download pages and extract links.
- downloaders : Upper bound for number of pages concurrently downloading.
- extractors : Upper bound for number of pages concurrently analyzed for links extraction.
10. Networking: HelloUDP
Develop client and server, interacting via UDP.
- Class HelloUDPClient must send requests to a designated server, receive responses and echo them to the console.
- Command line arguments:
- Server host name or IP.
- Port which the server is listening to.
- Request prefix.
- Number of threads sending requests.
- Number of requests per thread to send.
- Command line arguments:
- Port to listen.
- Number of threads processing requests.
11. Serialization and RMI: Bank
The initial bank implementation is located in course examples of RMI usage.
- Add functionality to work with individuals ( Person ).
- It must be possible to get first name, last name and passport number of given Person .
- Local Person instances ( LocalPerson ) must be transferred using serialization. These are snapshots and are not affected remotely since created.
- Remote Person instances ( RemotePerson ) must be used via RMI. Only skeleton is transferred so all changes affect original Person stored in bank.
- Each Person may possess several bank accounts those must be accessible. These accounts must have following ids: passport:subId .
- Bank functionality to add:
- Lookup any instance type of Person by passport number.
- Create new Person record.
- Command line arguments:
- First name.
- Last name.
- Passport number.
- Account ID.
- Money amount to add.
- It is recommended to use JUnit 5.
- Tests should not expect RMI Registry to be started preliminarily.
- Create class BankTests which starts tests and prints results to the console.
- Create script, launching BankTests . Return code must be 0 only in case of success.
- Create script, launching tests in a common way for the used testing framework. Return code must be 0 only in case of success.
13. Internationalization and localization: Text statistics
- Develop TextStatistics application, analyzing languages in various languages.
- Command line arguments: TextStatistics
- Supported text locales: all available locales in system.
- Supported output locales: Russian, English.
- Files encoding: UTF-8.
- Categories to analyze:
- Sentences.
- Lines.
- Words.
- Numbers.
- Money amounts.
- Dates.
- Number of occurrencies.
- Number of distinct values.
- Minimal value.
- Maximal value.
- Minimal length.
- Maximal length.
- Mean value / length.
- Command line arguments: