master
Daan Vanoverloop 12 months ago
parent f902cd3073
commit e8cd97a0ae
Signed by: Danacus
GPG Key ID: F2272B50E129FC5C

@ -0,0 +1 @@
Subproject commit 268c23ce6bdab7160c37f5c53cf2510a637a8fce

@ -0,0 +1 @@
Subproject commit 0e1c14e40b125dab4a34380c07529be1074382da

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

@ -0,0 +1,10 @@
{
"suggest.noselect": false,
"suggest.enablePreselect": false,
"coc.preferences.noselect": false,
"languageserver": {
"haskell": {
}
}
}

@ -0,0 +1,163 @@
module Email where
import Data.List
data Mail = MkMail
String -- Sender
String -- Receiver
Int -- Timestamp
Bool -- IsRead
String -- Subject
String -- Body
deriving Show
mailSender :: Mail -> String
mailSender (MkMail s _ _ _ _ _) = s
mailReceiver :: Mail -> String
mailReceiver (MkMail _ r _ _ _ _) = r
mailTimeStamp :: Mail -> Int
mailTimeStamp (MkMail _ _ ts _ _ _) = ts
mailRead :: Mail -> Bool
mailRead (MkMail _ _ _ r _ _) = r
mailSubject :: Mail -> String
mailSubject (MkMail _ _ _ _ s _) = s
mailBody :: Mail -> String
mailBody (MkMail _ _ _ _ _ b) = b
markMailRead :: Mail -> Mail
markMailRead (MkMail s r ts _ sj bo) = MkMail s r ts True sj bo
instance Eq Mail where
m1 == m2 = mailTimeStamp m1 == mailTimeStamp m2
instance Ord Mail where
compare m1 m2 = compare (mailTimeStamp m1) (mailTimeStamp m2)
data MailServer = MkMailServer [Mail]
deriving Show
-- Applies a function to the list within the MailServer
serverMap :: ([Mail] -> [Mail]) -> MailServer -> MailServer
serverMap fn (MkMailServer mails) = MkMailServer $ fn mails
serverMap2 :: ([Mail] -> [Mail] -> [Mail]) -> MailServer -> MailServer -> MailServer
serverMap2 fn (MkMailServer mails1) (MkMailServer mails2) = MkMailServer $ fn mails1 mails2
markAsRead :: Int -> MailServer -> MailServer
markAsRead ts = serverMap (map mark)
where mark mail = if ts == mailTimeStamp mail
then markMailRead mail
else mail
addMail :: Mail -> MailServer -> MailServer
addMail m = serverMap add
where add mails = if elem m mails
then mails
else m : mails
-- Query the mail server with a given filter function
queryServer :: Bool -> (Mail -> Bool) -> MailServer -> MailServer
queryServer s q | not s = serverMap (filter q)
queryServer s q | s = serverMap (sort . (filter q))
qSBySender :: String -> MailServer -> MailServer
qSBySender sender = queryServer True (((==) sender) . mailSender)
qSByReceiver :: String -> MailServer -> MailServer
qSByReceiver receiver = queryServer True (((==) receiver) . mailReceiver)
qSByReceiverUnRead :: String -> MailServer -> MailServer
qSByReceiverUnRead receiver server = queryServer False (not . mailRead) $ qSByReceiver receiver server
qSInRange :: Int -> Int -> MailServer -> MailServer
qSInRange from to = queryServer True tsBetween
where tsBetween mail = ts >= from && ts <= to
where ts = mailTimeStamp mail
qSubjectContains :: String -> MailServer -> MailServer
qSubjectContains q = queryServer False (isInfixOf q . mailSubject)
qBodyContains :: String -> MailServer -> MailServer
qBodyContains q = queryServer False (isInfixOf q . mailBody)
qContains :: String -> MailServer -> MailServer
qContains q s = serverMap2 union (qSubjectContains q s) (qBodyContains q s)
type IORespone = IO (Bool, Int, MailServer)
mainContinueNext :: Int -> MailServer -> IORespone
mainContinueNext ts server = return (True, ts + 1, server)
mainRunCmd :: String -> Int -> MailServer -> IORespone
mainRunCmd cmd ts server = case cmd of
"exit" -> mainExit ts server
"send" -> mainSend ts server
"read" -> mainRead ts server
"search" -> mainSearch ts server
otherwise -> mainError ts server
mainError :: Int -> MailServer -> IORespone
mainError ts server = putStrLn "Unknown command" >> return (True, ts, server)
mainExit :: Int -> MailServer -> IORespone
mainExit ts server = putStrLn "Exiting normally" >> return (False, ts, server)
ask :: String -> IO (String)
ask s = do
putStr $ s ++ ": "
l <- getLine
return l
sendMail :: String -> String -> String -> String -> Int -> MailServer -> MailServer
sendMail from to subject body ts server = addMail (MkMail from to ts False subject body) server
mainSend :: Int -> MailServer -> IORespone
mainSend ts server = do
from <- ask "From"
to <- ask "To"
subject <- ask "Subject"
body <- ask "Message"
putStrLn "Mail sent"
mainContinueNext ts (sendMail from to subject body ts server)
mainRead :: Int -> MailServer -> IORespone
mainRead ts server = do
person <- ask "Name"
ats <- ask "Time"
print $ qSByReceiver person (queryServer False ((==) (read ats) . mailTimeStamp) server)
mainContinueNext ts server
mainSearch :: Int -> MailServer -> IORespone
mainSearch ts server = do
query <- ask "Query"
print $ qContains query server
mainContinueNext ts server
mainLoop :: Int -> MailServer -> IO ()
mainLoop ts server = do
putStr "Mail Server CLI> "
cmd <- getLine
(continue, newTs, newServer) <- mainRunCmd cmd ts server
if continue
then mainLoop newTs newServer
else return ()
testMail1 = MkMail "a" "b" 2 False "hello" "1234569"
testMail2 = MkMail "c" "a" 4 True "hello" "123456"
testMail3 = MkMail "b" "a" 2 False "fuck" "123456hel"
testMail4 = MkMail "c" "a" 4 False "hello9" "123456"
testMail5 = MkMail "c" "a" 5 False "you" "123456"
testMail6 = MkMail "c" "d" 2 False "hello" "123456"
testServer = MkMailServer
[ testMail1
, testMail2
, testMail3
, testMail4
]

@ -0,0 +1,145 @@
{-# OPTIONS_GHC -Wall #-}
module Fractals where
-- ========================
-- PART 1 : TURTLE GRAPHICS
-- ========================
-- 1a. Turtle Graphics Programs
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
data Turtle = Empty | Turn Double Turtle | Move Double Turtle
deriving (Eq, Show)
-- 1b. Trivial Programs
-- ~~~~~~~~~~~~~~~~~~~~
done :: Turtle
done = Empty
turn :: Double -> Turtle
turn angle = Turn angle Empty
step :: Double -> Turtle
step distance = Move distance Empty
-- 1c. Concatenation Operator
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~
(>>>) :: Turtle -> Turtle -> Turtle
(>>>) (Empty) other = other
(>>>) (Turn d rest) other = Turn d (rest >>> other)
(>>>) (Move d rest) other = Move d (rest >>> other)
-- Operator kan je links ook infix schrijven, dan zijn er minder haakjes
-- 1d. Square Program
-- ~~~~~~~~~~~~~~~~~~
square :: Turtle
square = step 50 >>> turn 90
>>> step 50 >>> turn 90
>>> step 50 >>> turn 90
>>> step 50 >>> turn 90
-- ====================================
-- PART 2 : VISUALIZING TURTLE GRAPHICS
-- ====================================
type Point = (Double,Double)
type Line = (Point,Point)
-- 2a. Turtle to Lines
-- ~~~~~~~~~~~~~~~~~~~
linesHelper :: Double -> Point -> Turtle -> [Line]
linesHelper _ _ Empty = []
linesHelper angle position (Turn a rest) = linesHelper (angle + a) position rest
linesHelper angle (x, y) (Move d rest) = ((x, y), newpos) : linesHelper angle newpos rest
where newpos = ( x + d * sin (angle * (2 * pi) / 360)
, y + d * cos (angle * (2 * pi) / 360)
)
-- Trucje: p@(x, y) dan kan je p en x, y gebruiken
turtleToLines :: Turtle -> [Line]
turtleToLines = linesHelper 0 (500, 500)
-- 2b. Lines to SVG
-- ~~~~~~~~~~~~~~~~
svgHeader :: String
svgHeader = "<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">"
svgClose :: String
svgClose = "</svg>"
lineToSVG :: Line -> String
lineToSVG ((x1, y1), (x2, y2)) =
"<line x1=\"" ++ show x1
++ "\" y1=\"" ++ show y1
++ "\" x2=\"" ++ show x2
++ "\" y2=\"" ++ show y2
++ "\" stroke=\"blue\" stroke-width=\"4\" />"
-- Hulpfuncties kan je lokaal maken met where
linesToSVG :: [Line] -> String
linesToSVG ls = svgHeader
++ concat (map lineToSVG ls)
++ svgClose
-- 2c. SVG to File
-- ~~~~~~~~~~~~~~~
writeSVG :: FilePath -> Turtle -> IO ()
writeSVG f t = writeFile f $ linesToSVG $ turtleToLines t
-- ========================
-- PART 3 : TURTLE FRACTALS
-- ========================
-- 3a. Fractal Programs
-- ~~~~~~~~~~~~~~~~~~~~
data Fractal = FRACTAL_UNDEFINED
deriving (Eq, Show)
-- 3b. Trivial Programs
-- ~~~~~~~~~~~~~~~~~~~~
fdone :: Fractal
fdone = undefined
fturn :: Double -> Fractal
fturn = undefined
fstep :: Fractal
fstep = undefined
(>->) :: Fractal -> Fractal -> Fractal
(>->) = undefined
-- 3c. Concretization
-- ~~~~~~~~~~~~~~~~~~
concretize :: Double -> Fractal -> Turtle
concretize = undefined
-- 3d. Refinement
-- ~~~~~~~~~~~~~~
refine :: Fractal -> Fractal -> Fractal
refine = undefined
-- 3e. Iterated Function Application
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
times :: Int -> (a -> a) -> (a -> a)
times = undefined
-- 3f. Wrapping Up
-- ~~~~~~~~~~~~~~~
exam :: Fractal -> Fractal -> Int -> Double -> FilePath -> IO ()
exam = undefined

@ -0,0 +1,125 @@
module FractalsTest where
import Fractals
import Control.Monad
import Data.Maybe (isNothing, isJust)
import Prelude hiding (catch, foldr1, foldl1) -- Required for older versions of GHC
import Data.Monoid
import Control.Exception (catch, SomeException(..))
-- Some Tests
main :: IO ()
main = startTests
-- ~~~~~~~~~~~~~~~~~~~~~~~ PART 1 ~~~~~~~~~~~~~~~~~~~~~~~
<> test "(done >>> done == done)"
(done >>> done == done)
<> test "(turn 50 >>> done == turn 50)"
(turn 50 >>> done == turn 50)
<> test "(step 10 >>> done == step 10)"
(step 10 >>> done == step 10)
<> test "(step 10 >>> turn 50 /= turn 50 >>> step 10)"
(step 10 >>> turn 50 /= turn 50 >>> step 10)
<> test "(step 10 >>> turn 50 /= step 10)"
(step 10 >>> turn 50 /= step 10)
<> test "(step 10 >>> (turn 50 >>> step 20) == (step 10 >>> turn 50) >>> step 20)"
(step 10 >>> (turn 50 >>> step 20) == (step 10 >>> turn 50) >>> step 20)
-- ~~~~~~~~~~~~~~~~~~~~~~~ PART 2 ~~~~~~~~~~~~~~~~~~~~~~~
<> test "(turtleToLines done == [])"
(turtleToLines done == [])
<> test "(turtleToLines (turn 90) == [])"
(turtleToLines (turn 90) == [])
<> test "(turtleToLines (turn 90 >>> turn 45) == [])"
(turtleToLines (turn 90 >>> turn 45) == [])
<> test "(turtleToLines (step 10) == [((500,500),(500,510))])"
(turtleToLines (step 10) == [((500,500),(500,510))])
<> test "(turtleToLines (turn 90 >>> step 10) == [((500,500),(500,510))])"
(turtleToLines (turn 90 >>> step 10) == [((500,500),(510,500))])
<> test "(turtleToLines (turn (-90) >>> step 10) == [((500,500),(490,500))])"
(turtleToLines (turn (-90) >>> step 10) == [((500,500),(490,500))])
<> test "(turtleToLines (turn (-180) >>> step 10) == [((500,500),(500,490))])"
(turtleToLines (turn (-180) >>> step 10) == [((500,500),(500,490))])
-- ~~~~~~~~~~~~~~~~~~~~~~~ PART 3 ~~~~~~~~~~~~~~~~~~~~~~~
<> test "(fdone >-> fdone == fdone)"
(fdone >-> fdone == fdone)
<> test "(fturn 50 >-> fdone == fturn 50)"
(fturn 50 >-> fdone == fturn 50)
<> test "(fstep >-> fdone == fstep)"
(fstep >-> fdone == fstep)
<> test "(fstep >-> fturn 50 /= fturn 50 >-> fstep)"
(fstep >-> fturn 50 /= fturn 50 >-> fstep)
<> test "(fstep >-> fturn 50 /= fstep)"
(fstep >-> fturn 50 /= fstep)
<> test "(fstep >-> (fturn 50 >-> fstep) == (fstep >-> fturn 50) >-> fstep)"
(fstep >-> (fturn 50 >-> fstep) == (fstep >-> fturn 50) >-> fstep)
<> test "(concretize 10 fdone == done)"
(concretize 10 fdone == done)
<> test "(concretize 10 (fturn 20) == turn 20)"
(concretize 10 (fturn 20) == turn 20)
<> test "(concretize 10 fstep == step 10)"
(concretize 10 fstep == step 10)
<> test "(concretize 20 (fstep >-> fturn 50 >-> fstep) == step 20 >>> turn 50 >>> step 20)"
(concretize 20 (fstep >-> fturn 50 >-> fstep) == step 20 >>> turn 50 >>> step 20)
<> test "(refine fstep fstep == fstep)"
(refine fstep fstep == fstep)
<> test "(refine (fstep >-> fstep) fstep == fstep >-> fstep)"
(refine (fstep >-> fstep) fstep == fstep >-> fstep)
<> test "(refine (fstep >-> fstep) (fstep >-> fturn 50) == fstep >-> fstep >-> fturn 50)"
(refine (fstep >-> fstep) (fstep >-> fturn 50) == fstep >-> fstep >-> fturn 50)
<> test "(refine (fstep >-> fstep) (fstep >-> fturn 50 >-> fstep) == fstep >-> fstep >-> fturn 50 >-> fstep >-> fstep)"
(refine (fstep >-> fstep) (fstep >-> fturn 50 >-> fstep) == fstep >-> fstep >-> fturn 50 >-> fstep >-> fstep)
<> test "(times 0 (+7) 42 == 42)"
(times 0 (+7) 42 == 42)
<> test "(times 1 (+7) 42 == 49)"
(times 1 (+7) 42 == 49)
<> test "(times 5 (+1) 2 == 7)"
(times 5 (+1) 2 == 7)
<> test "(times 5 (*2) 2 == 64)"
(times 5 (*2) 2 == 64)
-- ~~~~~~~~~~~~~~~~~~~~~~~ END ~~~~~~~~~~~~~~~~~~~~~~~
>>= endTests
-- Mini testing framework
test :: String -> Bool -> IO Results
test msg b
= do notImplemented <- isUndefined b
case notImplemented of
True -> printResult yellow "function not implemented" >> return (Sum 1, Sum 0, Sum 0)
False | b -> printResult green "passed" >> return (Sum 0, Sum 0, Sum 1)
_ -> printResult red "failed" >> return (Sum 0, Sum 1, Sum 0)
where printResult colorCode result
= do putStrLn "--------------------------------------------------------------------------------"
putStrLn $ "-> Test " ++ msg ++ " " ++ colorise colorCode result
type Results = (Sum Int, Sum Int, Sum Int) -- (Not implemented, failed, passed)
-- OBSOLOTE: already in standard library
--
-- instance Monoid a => Monoid (IO a) where
-- mempty = return mempty
-- mappend = liftM2 mappend
startTests :: IO Results
startTests = putStrLn "Testing your solutions" >> return (Sum 0, Sum 0, Sum 0)
endTests :: Results -> IO ()
endTests (notImpl, failed, passed)
= do putStrLn "--------------------------------------------------------------------------------"
case (getSum notImpl, getSum failed, getSum passed) of
(0, 0, _) -> putStrLn $ colorise green "All tests passed"
(n, f, p) -> putStrLn $ unwords $
filter (not . null) [nNotImpl n, nFailed f, nPassed p]
where nPassed 0 = ""
nPassed p = colorise green $ "=> " ++ show p ++ " tests passed"
nFailed 0 = ""
nFailed f = colorise red $ "=> " ++ show f ++ " tests failed"
nNotImpl 0 = ""
nNotImpl n = colorise yellow $ "=> " ++ show n ++ "x function not implemented"
isUndefined :: a -> IO Bool
isUndefined a = (a `seq` return False) `catch` \(SomeException _) -> return True
red, green, yellow :: Int
(red, green, yellow) = (31, 32, 33)
colorise :: Int -> String -> String
colorise colorCode s = "\ESC[0;" ++ show colorCode ++ "m" ++ s ++ "\ESC[0m"

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"><line x1="500.0" y1="500.0" x2="500.0" y2="550.0" stroke="blue" stroke-width="4" /><line x1="500.0" y1="550.0" x2="550.0" y2="550.0" stroke="blue" stroke-width="4" /><line x1="550.0" y1="550.0" x2="550.0" y2="500.0" stroke="blue" stroke-width="4" /><line x1="550.0" y1="500.0" x2="500.0" y2="500.0" stroke="blue" stroke-width="4" /></svg>

After

Width:  |  Height:  |  Size: 392 B

@ -0,0 +1,6 @@
module Les6 where
day1 s l = let l' = zip [0..] l
in head [x * y | (i,x) <- l', (j,y) <- l', i /= j, x + y == s]

@ -0,0 +1 @@
Subproject commit a76980f19c8f57b8efa164b457a9c34a52e384a7

@ -0,0 +1 @@
Subproject commit 90b191a5de40394a4cf3e01a25d5d7c5cdd4548b

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

@ -0,0 +1 @@
Subproject commit 3e3bfc0e481a91cee703cb92bdba20008e1cdd43

@ -0,0 +1 @@
Subproject commit f8ce36ac239e701e9d8c8ec65e0db3b6c7b6e338

@ -0,0 +1,16 @@
<table>
<tr><td>This is a Browsr test page
<tr>
<td>With links and nested tables
<td><a href="pages/other_page.html">Click me!</a>
<td>
<table>
<tr>
<td><table><tr><td>Deeply nested table<td><a href="pages/another_page.html">This page does not exist</a></table><td>Another cell next to the table
<tr>
<td>More<td>Small<td>Cells
<tr>
<td>Even<td>More<td>Small<td>Cells
</table>
<tr><td>And a final row
</table>

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_15" default="true" project-jdk-name="15" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/exercices.iml" filepath="$PROJECT_DIR$/exercices.iml" />
</modules>
</component>
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
</component>
</project>

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -0,0 +1,24 @@
class Invoice {
void processPaymentReceived(int amount) {
this.setAmountPaid(this.getAmountPaid() + amount);
}
boolean readyForProduction() {
return this.getAmountPaid() * 100 / this.getInvoiceAmount() >= 10 && this.isCarOrderInvoice();
}
void startProduction() {
this.getCarOrder().startProduction();
}
}
class InvoiceManager {
void paymentReceived(Invoice invoice, int amount) {
invoice.processPaymentReceived(amount);
if (invoice.readyForProduction())
invoice.startProduction();
}
}

@ -0,0 +1,4 @@
<table>
<tr><td>This is another page
<tr><td><a href="../browsrtest.html">Go back</a>
</table>

@ -0,0 +1 @@
Subproject commit 35c2df63125fb163f8421a24a55359518235be53

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1 @@
Subproject commit 2b3e2854ecf81469d8b63cec195aa04b9bc48b4e

@ -0,0 +1 @@
Subproject commit c2fab77ee835c91f5e8fe35b1524ba4ed0a66cb8

@ -0,0 +1,128 @@
Probability Theory
- basic probability theory: slide 31
- discrete distributions: slide 45
+ Poisson distribution: slide 56
* Poisson as limit of binomial: slide 56
- continuous distributions: slide 59
+ exponential distribution: slide 62
* lack of memory property: slide 66
* survival function: slide 68
* hazard rate: slide 70
+ normal distribution: slide 75
* central limit theorem: slide 75
- joint distributions: slide 80
+ sum of independant random variables: slide 87
+ sum of independant Poisson random variables: slide 88
+ sum of i.i.d. exponential random variables: slide 90
- expectations and moments: slide 92
+ expectation and indicator: slide 102
+ using the tail: slide 103
+ overview: slide 106
- conditioning: slide 107
+ partition lemma: slide 109
+ tower rule: slide 109
+ law of total variance: slide 111
+ moments of random sum: slide 114
- (moment) generating functions: slide 126
+ sum of normal random variables: slide 130
+ overview: slide 131
- simulation of random variables: slide 136
- Jensen's inequality: slide 145
- functions of a random variable: slide 147
Poisson Processes
- counting process: slide 152
- definitions for Poisson process: slide 159
- Poisson process as a renewal counting process: slide 176
+ strong law of large numbers: slide 179
+ stopping time: slide 182
+ Wald's equation: slide 184
+ renewal-reward theorem: slide 190
- statistical inference for discrete distributions: slide 203
- conditional distribution of arrival times: slide 208
+ thinning: slide 212
+ M/G/infinty queue: slide 220
+ conditional distribution of Poisson process: slide 227
- superposition: slide 229
Non-homogeneous Poisson Processes
- definition for non-homogeneous Poisson process: slide 245
- mixed Poisson model: slide 272
- compound Poisson process: slide 276
- Bernouilli mixture models: slide 283
(- Poisson mixture models: slide 293)
- simulating Poisson processes: slide 300
Markov Processes
- applications: slide 310
- definition for Markov process: slide 324
- Kelly criterion: slide 345
- multi-step transition probabilities: slide 358
+ Chapman-Kolmogorov equation: slide 359
- simulation of Markov chains: slide 373
- calibrating Markov chains: slide 379
- structure of Markov chains: slide 386
- decomposition of the state space: slide 389
- hitting & passage times: slide 396
- first step analysis: slide 402
- recurrence and transience: slide 418
+ recursive equation for passage times: slide 421
- strong Markov property: slide 427
- alternative conditions for recurrence: slide 434
+ expected number of visits: slide 442
- periodicity: slide 456
- canonical decomposition: slide 459
- simple branching process: slide 475
- absorption probabilities: slide 499
- mean weighted time till absorption: slide 509
- stationary distribution: slide 526
+ doubly stochastic transition matrix: slide 545
Hidden Markov Models
- mixture models: slide 564
- definition for hidden markov model: slide 572
- likelyhood estimation: slide 584
+ forward algorithm: slide 590
- decoding: slide 595
+ Viterbi algorithm: slide 598
- learning: slide 605
+ forward-backward algorithm: slide 615
- case study: slide 616
-------------------------------------------------------------------
Brownian Motion
- definitions for Brownian motion: slide 4
- simulation of a standard Brownian motion: slide 20
- properties of Brownian motion: slide 23
- stochastic differential equations: slide 37
+ total and quadratic variation: slide 39
* expected value of |dW|: slide 40
* expected value of dW^2: slide 42
- Ito's lemma: slide 48
+ log/exp process: slide 49
- distribution of hitting time: slide 52
+ reflection principle: slide 54
- distribution of the maximum: slide 62
- joint distribution of maximum and hitting time: slide 66
- distribution of zeros: slide 69
- distribution of the hitting time of the maximum: slide 75
- jump-diffusion processes: 98
- Brownian motion as a martingale: slide 105
+ quadratic martingale: slide 108
+ exponential martingale: slide 109
- Ornstein-Uhlenbeck process: slide 113
- geometric Brownian motion: slide 115
- optional stopping theorem: slide 117
- exit distribution from an interval: slide 120
(- hitting time transform: slide 134)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1 @@
Subproject commit 60b749c57074ee1c51c5c3d7d2c7e89f85396e5f

@ -0,0 +1,54 @@
====BRAKKE ZINNEN SECTIE====
Toch bleef de doorbraak hiervan uit voor event gedreven scenar... , doorbraak hiervan uit... is stroef
Indien er al sprake is van een zekere voorkennis omtrent deze begrippen kan dit deel overslaan en rechtstreeks naar sectie 3 gaan, stroef
... ek maar worden later nog aangehaald in de Outlook...., waarom outlook met hoofdletter en in de inleiding niet?
... de full duplex communicatie doordat het zenden en het ontvangen van data letterlijk losgekoppeld zijn, dit is spreektaal
gaan het signaal door propageren doorheen het netwerk zonder, beter is ...signaal propageren doorheen, dus zonder de extra 'door'
Verder kan ZW botsingen verm..., Beter Zero-Wire niet afkorten, of je moet het ervoor aangeven
adresseerbaar-heid, waarom een - ertussen?
Vanaf dat beide nodes klaar zijn met..., Nadat beide ... is beter
Merk op dat deze aanpak full-duplex communicatie zoals deze in UART bestaat niet kan ondersteunen..., is stroef er moet hier ergens een komma tussen
nnen ZW niet los staat van elkaar zoals ..., niet los van elkaar staan, is beter
verzenden zonder dat het het de sessie tussen B en C verstoort., waarom het het
Iedere node in de Stil-toestand zal dus alle verdere berichten door het netwerk negeren en zo de communicatie tussen twee punten in het netwerk vrijwaren. Met negeren wordt hier bedoeld:..., Dit is de eerste keer dat negeren voorkomt
node A zal niets van de data bufferen of verwerken die tussen B en C wordt verzonden en node A zal zelf geen nieuwe data het netwerk insturen., deze zit kan je best uit elkaar trekken
Deze zijn allemaal 3 bytes lang zodat ze door de implementatie ze kan onderscheiden van gewone data., zin is stroef
We laten dit in de context van dit onderzoek over aan de programmeur die hiervoor verantwoordelijk is., 2e dit moet een het zijn
sessie-berichten, data-transmissie, adres-ruimte, ZW-netwerk, adres-veld, .... waarom een - ertussen?
Wat betreft het implementeren van deze timers zijn we..., de implementatie
Eens deze af loopt en nog geen bevestiging gekregen is voor de sessie..., en ER nog geen
Naast deze timer is er bovengrens bij voor het aantal keer dat de timer kan aflopen...., ???? wat bedoel je hier zelf mee, en stroef
Dit onderzoek brengt low-latency draadloze toegang voor bedraade randapparaten in een netwerk..., Dit onderzoek geeft bedraade randapparaten toegang tot een low...
====ANDERE FEEDBACK SECTIE====
Als je weet hoelang het duurt om data over het netwerk te sturen, en je weet hoeveel data je stuurt. Dan is het nuttige info om je goodput te berekenen.
Moet je de corrupts niet oplossen? UART veracht toch perfecte data.
connectie georienteerd, soms met - soms zonder
Te veel we gebruikt.
Waarom is UART belangerijk voor de BEVEILIGING van iot.
Transparant uitleggen

@ -0,0 +1,39 @@
Review Formulier (max 1 blz.) (Tom Van Steenbergen en Daan Vanoverloop)
Titel paper: Een transparante overbrugging van UART over Zero-Wire
Auteur paper: Thibault Van Win en Jakob Heirwegh
Samenvatting van de paper (een 5 a 10 lijntjes):
De auteurs maken een transparante brug tussen een UART, een interface voor seriele communicatie, en Zero-Wire.
Het doel is om dure kabels in sensornetwerken te vervangen door goedkope Zero-Wire transceivers.
Omdat UART geen bus is, maar een een-op-een communicatie, is addressering noodzakelijk bij het overbruggen over een bus. Om dit probleem makkelijk en efficiënt op te lossen kiezen ze voor een connectiegeoriënteerde aanpak.
Ze stellen een sessieprotocol waarbij ze een toestandsautomaat gebruiken om de sessies te beheren.
De implementatie bestaat uit toestandsautomaten, timers en circulaire wachtrijen.
Voor de evaluatie gebruiken ze een testopstelling met BeagleBone Blacks en een UART BLE module.
Het opstellen van een sessie duurt het langste, maar hierna is er een snelle gegevensuitwisseling.
Verder wordt er nog besproken hoe geavanceerde UART eigenschappen eventueel gebruikt zouden kunnen worden.
Samenvatting beoordeling (een 5 a 10 lijntjes):
Sommige delen van de tekst lezen minder vlot en bevatten schrijffouten.
Let op correct gebruik van koppelteken en correct spatiegebruik.
Let ook op het correct gebruik van komma's. Gebruik eventueel LanguageTool om deze fouten te vinden.
De structuur van de paper is goed, alle delen volgen elkaar logisch op.
Er wordt genoeg achtergrondkennis gegeven en met een basiskennis van computerwetenschappen is de paper
zeker te begrijpen.
De enige doelstelling is dat het mogelijk is en er worden geen restricties gelegd op de performantie.
Deze doelstelling is bereikt. De argumentatie is wel goed.
Een drietal sterke punten:
- Voldoende achtergrondinformatie
-
Een drietal zwakke punten:
- Spelling en schrijffouten.
- Weinig doelstellingen, kan specifieker.
- Het is misschien nuttig om ook de goodput van de brug te bespreken.
Inhoudelijke vragen &
suggesties voor verbetering:

@ -0,0 +1,64 @@
# Algemeen
Let op correct gebruik van koppelteken en correct spatiegebruik.
"adresseerbaar-heid", "sessie-berichten", "data-transmissie", ... moeten zonder koppelteken geschreven worden.
Let ook op het correct gebruik van komma's voor maar.
Gebruik eventueel LanguageTool om deze fouten te vinden.
# Abstract
goed
# 1
clock -> klok
# 2
## 2.1
- Outlook met hoofdletter, waarom?
- In plaats van "letterlijk losgekoppeld" misschien beter "fysiek losgekoppeld"?
# 2.2
- "gaan het signaal door propageren doorheen het netwerk zonder", beter is" "...signaal propageren doorheen", dus zonder de extra 'door'
# 3
# 3.1
# 3.2
- "dat het het de sessie"
# 3.3
- "zodat ze de implementatie ze kan"
# 3.4
- "timer" -> "timers"
- "startSession" -> "StartSession"
- "Eens deze af loopt en nog geen bevestiging gekregen is .." -> "er" voor "nog"?
- "Naast deze timer is er bovengrens bij voor het aantal keer dat de timer kan aflopen" -> "Naast deze timer is er een bovengrens op het aantal keer dat deze timer kan aflopen"
# 4
# 4.2
- "zette" -> "zetten"
# 5
- "Dit onderzoek brengt low-latency draadloze toegang voor bedraade randapparaten in een netwerk": deze zin klinkt vreemd. Je start misschien beter met: "Dit onderzoek geeft bedraade randapparaten toegang tot een draadloos netwerk met lage latency."
#

Binary file not shown.

@ -0,0 +1 @@
Subproject commit f860ea5093a7428f8a44756fd06b647500fc84ed

@ -0,0 +1 @@
Subproject commit 8a3e132d7e209725fd6563553067a25e36c2d8cd

@ -0,0 +1 @@
Subproject commit 48a2e53865bbb5c79a2fb61c6e3eac2e39b73f7d

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="food-rest-service" />
</profile>
</annotationProcessing>
</component>
<component name="JavacSettings">
<option name="ADDITIONAL_OPTIONS_OVERRIDE">
<module name="food-rest-service" options="-parameters" />
</option>
</component>
</project>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save