The linear layer is pretty straightforward, as the output activation will have the shape [batch_size, *, out_features].
The activation of the conv layer is a bit trickier, as the shape depend on the spatial size of your input:
x = torch.randn(2, 10)
out = l(x)
print(out.nelement())  # batch_size * out_features
> 200

x = torch.randn(2, 1, 24, 24)
out = c(x)
print(out.nelement())  # batch_size * out_channels * (h - (kW - 1)) * (w - (kW - 1))
> 1848
print(out.shape)
> torch.Size([2, 2, 22, 21])